昔うっかり買ったので、せっかくだからとGoの勉強してたら、packageを使用してコードを別ディレクトリに分けるあたりでいきなり出鼻をくじかれたので、備忘録的にメモしておく
#TL; DR
プロジェクトについては初手
go mod init プロジェクト名
で go.mod
ファイル作っとかないとダメ
#起こったこと
Goのファイルにて、下位ディレクトリに作った別のGoファイルから import
しようとしたところ
package importしようとしたディレクトリ名 is not in GOROOT
とか言われてエラー吐かれた
基本的には講座の通り書いてたはずなのに、講座で特に触れられてないエラー出てきて初学者大混乱
取った対応
仕方ないので "is not in GOROOT" あたりの文言でぐぐって何が原因なのか探ってみると、出てくるのはPATHや環境変数あたりの話になる
個人的には「PATHを通す」自体はわかるものではあるんだけれど、学習してると参考書内の記述や講座で喋ってる内容に「PATHを通しておいてくれ」みたいなのがあまりなく、すでに前提条件みたいになってるのに何の説明もないような感じになる+ここで一旦出鼻くじかれるので、PATHや環境変数のことは正直好きではない(愚痴)
で、GoのPATHについてどう設定するのか、と考えつつ見ていくと出てくるのは go.mod
なるファイルの存在
何も考えずインストールして作ってたが、自分ではそんなファイル見た記憶がないし、調べても自分のPC内に存在していない
すごい雑な理解だと、これがGoプロジェクトのモジュール関係の管理的なことをやってるらしいので、まずこれが必要そうであるという結論に達する
そのため、中の設定どうするかは後で考えるとしてまず作ってみないと、ということで早速
go mod init プロジェクト名
で go.mod
ファイルをプロジェクト内にサクッと用意することに
念のため、ここまでできたらモジュールの依存関係をふんにゃかしてくれるらしいコマンドとして
go mod tidy
というのがあるらしい、というか go mod init
した時のメッセージからして
go: to add module requirements and sums:
go mod tidy
モジュール要件とまとめをつけるためにこのコマンド打て、と言われてるので実行する
で、これでどうなるかと、さっきエラー吐かれた go run
実行すると
はい、ちゃんと動きました
解決!
単に go.mod
ファイルが存在してなかったのがいけなかったらしい
学習に使った講座では特に言われてなかった気がするが、そもそもコマンドとかでプロジェクト作ると自動でつくようなものだったとかだろうか?
ともかく、解決できたのでこれで良さそう