LoginSignup
2
1

More than 3 years have passed since last update.

Goのpackageを作ろうとしたらgo.modの作り方で困った件

Last updated at Posted at 2019-11-13

おことわり

とても恥ずかしいミスだったのですが、即解決のダイレクトな記事がなかったので残しておきます。

結論

packageのルートディレクトリ(ex. my_package)で、GO111MODULE="on"になるようにしてから

go mod init my_package

を実行する。(そもそもアンダースコア使っていいのか、、、?)

ルートディレクトリ内で、ルートディレクトリ自身の名前を指定することがパッと思いつかなかった。
あとtouchとかで自分で勝手に作っちゃダメ!(やってしまった)

状況

  • アプリケーション(=main.goがある)リポジトリばかり触っていた
  • フレームワークのプロジェクトgenerateコマンドがgo.modを勝手に作ってくれてた

今までこんな状況だったので、いざ自分がpackageを0から作るとなった時に、
pacakge内でgo testひいてはgo getを実行できなかった。

ちなみに

よそのパッケージからgo getしようと思ったら、
go.modの1行目には

module github.com/{Githubのorganization名orアカウント名}/my_package

という風に書き変えなければならない。
初期状態だと

module my_package

のはずだが、
この状態のまま他所からmy_packageをgo getしようとすると

$ go get -u "github.com/{Githubのorganization名orアカウント名}/my_package"
go: finding github.com/{Githubのorganization名orアカウント名}/my_package latest
go: downloading github.com/{Githubのorganization名orアカウント名}/my_package v0.0.0-{略}
go: extracting github.com/{Githubのorganization名orアカウント名}/my_package v0.0.0-{略}
go get: github.com/{Githubのorganization名orアカウント名}/my_package@v0.0.0-{略}: parsing go.mod:
        module declares its path as: my_package
                but was required as: github.com/{Githubのorganization名orアカウント名}/my_package

という感じで怒られる。

参考

GoのWiki

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1