🔰

Go言語初心者が,「disallowed import path」にハマった話.

に公開

状況

タイトルの通りです.
pythonのパッケージ管理との違いに翻弄されながらも,なんとかGoにおけるmoduleの理解が深まってきて,「よしHello Worldをやってみよう!」と思い立ったときに,このエラーにハマりました.

環境

バージョン:go1.24.6
OS:darwin/arm64 (macOS Sequoia 15.6.1)
go versionコマンドで確認可能

当時の理解

go mod init 〇〇コマンドを使えば,go.modというファイルが生成されるのか.
ふむふむ,〇〇のところは後から再利用したり,他人に共有したりするときのURLになるのか.
なるほど.
でも,まずは配布のことは考えなくていいから,適当にmod/sampleとかでいいかぁ.
他の人も,sampleAとか,sample/testとか適当な感じでモジュール名を決めてるみたいだし.
go mod init mod/sample

よしよし,main.goでHello Worldを出力するコードを書いてみたぞ...!
案外,簡単だったな.
よし,実行だ!
なになに,go run .go run main.goで実行するのか.
よし,go run .

...

package mod/sample: disallowed import path "mod/sample"

え,なんで?...

解決

https://github.com/golang/go/issues/35230

ここのWebサイトによると,Goの標準パッケージはmodで始まるから,モジュール名をmod/で始めてはいけないらしいです.
試しに,mods/samplemodule/sampleにしてみた所,Hello Worldが表示されました.

Discussion