golangお勉強中です。
そこでの遭遇したこと。
遭遇したこと
ファイルを別々にして、go run main.go
とやると、undefinedといってエラーが出て実行できない。
# command-line-arguments ./main.go:128:8: undefined: NewAccountBook ./main.go:175:19: undefined: Item ./main.go:176:11: undefined: Item ./main.go:188:25: undefined: Item
原因
参考にしたサイトにも書いてあった通り、go run
した場合は引数に渡したファイルのみがコンパイル対象になるために発生するとのこと。
なるほどねー。
対策
ってことで、「このファイルも関係あるんだよ」の意味で、関係するファイルを引数で追加してあげることでちゃんとgo run
できることを確認した。
たとえば、ファイルがmain.go
とaccount.go
というファイルがあったとしたら、
go run main.go account.go
としてあげれば動く。*.go
でも大丈夫。
buildは特に意識しないでもちゃんと読んでくれるのにgo run
は読んでくれないんだね。
なかなか面白い。