2023/04/05
Goプロジェクトはどこから読み始めるのか
Golangで書かれたプロジェクトを読むとき、どこから読み始めるのか。春のgolangおさらい祭り。
func main() を探す
プロジェクトがなんらかのアプリケーションである場合は、func main() が存在するのでそれを探す。たいていはリポジトリのルートに main.go があり、そこに func main() がある。しかし、そうではないパターンもある。なので、main.go を探すのではなく、func main() を探す。そこがエントリーポイントになる。func main() の書かれた .goファイルはおおむねリポジトリのルートにあるが、サブディレクトリにある場合もある。また、ファイル名も main.go とは限らない。
func main() が複数ある
func main() を探してみると、ひとつのプロジェクトに複数の func main() が見つかることがある。これは、複数のアプリケーションを持っているから。しかし、そのような場合、必ず func main() の書かれた .go ファイルはそれぞれ別々のディレクトリに分かれている。それぞれがアプリケーションになるので、そういう認識で読む。
func main() が無い
ライブラリです。importして公開された func を呼び出して利用します。
CIを読む
Github Actionsなどの CI を利用してビルドされているものであれば、CIに書かれているビルドフローを読むことでどういう構造になっているのかわかることがある。