public note

Go開発環境の構築 (goenv, Go Modules, Visual Studio Code)

適当につくってしまったGoの開発環境を再構築した手順のまとめ。

環境

構築手順

goenv インストール

git clone https://github.com/syndbg/goenv.git ~/.goenv

環境変数の設定

下記をシェル初期化ファイルへ追記。VS Codeで Go Modules を使うため、明示的にONと指定。

# goenv
export GOENV_ROOT="$HOME/.goenv"
export PATH="$GOENV_ROOT/bin:$PATH"
export GO111MODULE=on
eval "$(goenv init -)"

カレントシェルに環境変数を設定。

source ~/.bashrc

Goのインストール

1.15.x の最新をインストール。最新の 1.16.2 はなぜかインストールエラーになった(原因は調べていない)

goenv install 1.15.10
goenv global 1.15.10

globalを設定しないと、VS CodeCannot find "go" binary. Update PATH or GOROOT appropriately. という警告を出す。

作業ディレクトリの設定

cd ./my_project
goenv local 1.15.10
go mod init github.com/user_name/my_project

デバッガのインストール

go get -u github.com/derekparker/delve/cmd/dlv

VS Code 拡張機能インストール

インストールすると、以下のエラーが表示された。

Error loading workspace: gopls requires a module at the root of your workspace. You can work with multiple modules by opening each one as a workspace folder. Improvements to this workflow will be coming soon, and you can learn more here: https://github.com/golang/tools/blob/master/gopls/doc/workspace.md.

HOME以下を VS Code で開いていたので、複数のモジュールを検知していてロードできない、ということだと解釈。

作業ディレクトリをOpen

VS Codeで作業ディレクトリを直接開くことにした。これで先のエラーは解消。f:id:ts223:20210404001750p:plain

以上の設定で、buildやrunなどはひととおり動作することを確認。


以下は、試行錯誤したけどうまく行かなかった設定の記録

setting.json に設定追加

    "gopls": {
        "experimentalWorkspaceModule": true
    }

リロードするとエラーが変わった。

Error loading workspace: found module "github.com/go-delve/delve" twice in the workspace

f:id:ts223:20210404000340p:plain

どうやら、pkgと重複しているということらしい。 以下のページを読んだが、面倒であることがわかったので止めた。

visual studio code - How to properly use go modules in vscode? - Stack Overflow