Day-to-day the memorandum

やったことのメモ書きです。

IntelliJ IDEAにてgoenvで入れたGoを扱う

goenvでGoをインストールしてIntelliJ IDEAを使って、久しぶりGoを書いてみようと思ったら躓いたのでメモ書きです。

各種バージョン

$ goenv --version
goenv 2.0.0beta11
$ go version
go version go1.16.3 darwin/amd64

インストール方法はGitHubリポジトリに書いてある通りに行っています。
https://github.com/syndbg/goenv/blob/2.0.0beta11/INSTALL.md

なにが起きたか

go getgo mod tidyをターミナルから実行してモジュールを取得した場合、IntelliJ IDEAでコードを書こうとするとモジュールが取得できていないようになってしまいます。

IntelliJ IDEAの初期設定ではgoのモジュールがある場所が~/goになっています。

しかしgoenvで入れたGoを使ってgo getなどをすると~/go/{version}配下にダウンロードされます。

そのため、IntelliJ IDEAの設定とコマンドを実行してダウンロードした場所が違うためIntelliJ IDEAで認識されていないようです。

goenvが~/go/{version}配下にダウンロードするようになったのは2.0.0beta6からのようです。
https://github.com/syndbg/goenv/blob/2.0.0beta11/CHANGELOG.md#200beta6

つまりGOPATHを合わせてあげればいいことになります。

解決策

goenvの環境変数GOENV_DISABLE_GOPATH=1を設定してあげればGOPATHが~/goになりますが、goenv的には~/go/{version}が推薦されるようです。
https://github.com/syndbg/goenv/blob/2.0.0beta11/ENVIRONMENT_VARIABLES.md

なので、IntelliJ IDEAの設定でGOPATHを設定してあげることにしました。

Preferences > Languages & Frameworks > GOPATH に/Users/hoge/go/1.16.3を設定し無事読み込まれるようになりました。

ついでに

ちなみにgoenvで入れた場合、IntelliJ IDEAのGOROOTに/Users/hoge/.goenv/{version}を設定する必要があります。

Preferences > Languages & Frameworks > GOROOT で設定します。

Macだと隠しフォルダが見えない場合があるのでCommand + Shift + gを押すとPathを指定して設定することできます。