Go、mainパッケージを分割したときにgo runが実行できない!

パッケージを分割して別のファイルにすることができる。

例えばmainパッケージを

app.go

main.go

と2つのファイルに分けて、

package main

と書き始めれば、2つともmainパッケージとみなされる。

 

しかし、その場合は、いつものように

go run main.go

実行することはできない。

 

go runコマンドは、指定されたmain.goのみを実行対象として選択するので、

mainパッケージとして分けたapp.goは実行されない

app.goを含めて実行させるには、

$ go run main.go app.go

のように、mainパッケージを定義しているGoファイルをすべて列挙するか、

$ go run *.go

とワイルドカードを使って指定する必要がある。

 

ずっと go run main.go で実行していて、app.goで定義した関数・変数が全然参照できないじゃん!って思っていたら、こういうことでした。