Go開発環境の構築 (goenv, Go Modules, Visual Studio Code)
適当につくってしまったGoの開発環境を再構築した手順のまとめ。
環境
- OS: CentOS 7 (VirtualBox on Windows 10 pro)
- IDE: Visual Studio Code
構築手順
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 Code がCannot 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で作業ディレクトリを直接開くことにした。これで先のエラーは解消。
以上の設定で、buildやrunなどはひととおり動作することを確認。
以下は、試行錯誤したけどうまく行かなかった設定の記録
setting.json に設定追加
"gopls": { "experimentalWorkspaceModule": true }
リロードするとエラーが変わった。
Error loading workspace: found module "github.com/go-delve/delve" twice in the workspace
どうやら、pkgと重複しているということらしい。 以下のページを読んだが、面倒であることがわかったので止めた。
visual studio code - How to properly use go modules in vscode? - Stack Overflow