main.goの1ファイルから卒業するため、
とりあえずファイルを分けたらハマったのでメモ
前提としてプロジェクトがこうなっているとします。
.
├── main.go
└── foo.go
各ファイルの中身は以下の通り
■ main.go
package main
func main() {
Bar()
}
■ foo.go
package main
import "fmt"
func Bar() {
fmt.Println("hello main package")
}
とてもシンプルですね。
それでは実行してみましょう! hello main package
と出力されるはずです!
$ go run main.go
./main.go:4:2: undefined: Bar
おや?なにかエラーが・・・
どうやらfoo.go
が認識されていないようです。
すごく基本的な部分なのですが実行の仕方がまずかったようです。
正しく動くパターンはこちら
$ go run *.go
# もしくはすべてのファイルを渡す
$ go run main.go foo.go
こうしないと本当にmain.go
しか対象としてくれないため、
別ファイルで定義されたものが参照できなかったということです。
おしまい。
追記
今ではgo run .
でも実行することができます