技術屋にゃん兵衛のてくてくらぼ by データウィズ [DataWith]

気の向くままソフトについて書いてます。バリバリエンジニアではないのであくまでも初心者目線で。

Go言語の「go.mod」について

Go言語の「go.mod」のについて

 

前回、エラーが出るから「go.mod」を、Go_Sample.goと同じフォルダーに配置したら警告が消えました。

 

そこで思ったのですが、「これを単純にコピーしただけで問題ない?」ということです。もし、この中に様々な他のコンポーネントやライブラリが定義されているのであれば、これだけをコピーしただけでは、他のコードを書くとだめなのではないか、と思ったんです。

 

Go言語のサイトにも、「他のモジュールへの依存関係を含むもクールのプロパティ」と「Go言語のバージョン」を定義している、と書かれています。「依存関係」という言葉が怖い。

 

テキストエディタで「go.mod」を開くと次のような内容です。

 

// Module misc contains binaries that pertain to specific platforms

// (Android, iOS, and WebAssembly), as well as some miscellaneous

// tests and tools.

module misc

 

go 1.21

 

これだけしか書いていない?絶対、他のコードは動かない!

ということは、「コードの内容に合わせて生成されるはず」という仮定が成り立ちます。

 

で、探してみたら情報がありました。

さっきのGoのサイトの下のほうに

 

Go generates a go.mod file when you run the go mod init command. The following example creates a go.mod file, setting the module’s module path to example/mymodule:

$ go mod init example/mymodule

 

とあります。つまり、「go mod init」コマンドを作って生成するようです。

 

ということで、一旦コピーした「go.mod」を削除して、Windowsのコマンドプロンプトを開いて、「Go_Sample.go」のあるディレクトリに移動します。

 

コマンドプロンプトで

$ go mod init Go_Sample.go

と実行したら、「go.mod」ファイルが生成されました。

 

テキストエディタで内容を見ると、次のようになっています。

module Go_Sample.go

go 1.21.4

 

つまり、前回のやり方(コピーする)のは間違いで、このように「go.mod」は生成する必要があるということでした。

 

けど、Visual Studio Code内で、メニューとかで「go.mod」を生成できるんですかね。。。さらっとメニューを見た感じでは見つからなかった。