/var/www/yatta47.log

/var/www/yatta47.log

やったのログ置場です。スクラップみたいな短編が多いかと。

存在するはずなのにundefinedになる

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.goaccount.goというファイルがあったとしたら、

go run main.go account.go

としてあげれば動く。*.goでも大丈夫。

buildは特に意識しないでもちゃんと読んでくれるのにgo runは読んでくれないんだね。

なかなか面白い。

 

参考

go runしても分割したファイルが認識されない - おおたの物置