Go と VS Code
どっちのセクションで書こう悩んだが,所詮ツールの話だし,こっち側で。
- パソコンに Visual Studio Code を導入する(再チャレンジ)
- Go と VS Code ← イマココ
- Markdown と VS Code
- Java と VS Code
- やっと Codespaces が使える
それでは前回の続き。 VS Code に Go 言語開発支援環境を入れる。 といっても一択だけどね。
インストールはこちら。
$ code --install-extension golang.go
一応 Google が公式に参加している拡張機能らしい。
- The VS Code Go extension joins the Go project - The Go Blog
- Visual Studio Code Go extension joins the Go project
しかも最近,こちらも事実上のオフィシャルである gopls が,この拡張機能の既定の language server となったようだ。
個人的にひとつだけ気に入らないところがあって,既定の設定のままではプロジェクト・フォルダを開いたときにトップに go.mod
ファイルがないと上手く動かないみたいなんだよね(モジュール対応モードの場合)。
最初は拡張機能側の問題かと思っていたが,どうも gopls の制限らしい。
一応の回避策はあって settings.json
に以下のオプションを設定することでトップ以外の複数の go.mod
ファイルに対応できるようだ。
{
"gopls": {
"build.experimentalWorkspaceModule": true
}
}
ただし go.mod
ファイルで定義したモジュール名は開いたプロジェクト・フォルダ内で一意でなければならない。
名前が被ってるとめっさ怒られる。
まぁ,理屈は分からんでもないが,私の場合,ブログなどのドキュメント環境でサンプルコードを書き散らしていて,それらのモジュール名が大抵 “sample
” だったりするので被りまくりなんだよなぁ sigh…
ちなみに,この experimentalWorkspaceModule
オプションは一時的な措置なので将来的にはなくなるようだ。
それまでには何とかするということだろう。
それ以外の部分ではぶっちゃけ ATOM の go-plus よりも出来がいいので,ゆるゆると移行していきますよっと。
現時点での settings.json
の内容はこんな感じ。
{
"go.buildOnSave": "off",
"go.autocompleteUnimportedPackages": true,
"go.formatTool": "goimports",
"go.lintTool": "golangci-lint",
"go.gotoSymbol.includeGoroot": true,
"go.testOnSave": true,
"go.coverageOptions": "showUncoveredCodeOnly",
"go.coverOnSave": true,
"go.coverOnSingleTestFile": true,
"go.coverageDecorator": {
"type": "gutter"
},
"gopls": {
"build.experimentalWorkspaceModule": true
}
}
【2021-03-02 追記】
書き忘れていたが,コマンドパレットから
>Go: Install/Update Tools
と入力すると関連ツールのインストールおよびアップデートができる。
これを実行すると
Tools environment: GOPATH=/home/username/go
Installing 9 tools at /home/username/go/bin in module mode.
gopkgs
go-outline
gotests
gomodifytags
impl
goplay
dlv
golangci-lint
gopls
Installing github.com/uudashr/gopkgs/v2/cmd/gopkgs (/home/username/go/bin/gopkgs) SUCCEEDED
Installing github.com/ramya-rao-a/go-outline (/home/username/go/bin/go-outline) SUCCEEDED
Installing github.com/cweill/gotests/... (/home/username/go/bin/gotests) SUCCEEDED
Installing github.com/fatih/gomodifytags (/home/username/go/bin/gomodifytags) SUCCEEDED
Installing github.com/josharian/impl (/home/username/go/bin/impl) SUCCEEDED
Installing github.com/haya14busa/goplay/cmd/goplay (/home/username/go/bin/goplay) SUCCEEDED
Installing github.com/go-delve/delve/cmd/dlv (/home/username/go/bin/dlv) SUCCEEDED
Installing github.com/golangci/golangci-lint/cmd/golangci-lint (/home/username/go/bin/golangci-lint) SUCCEEDED
Installing golang.org/x/tools/gopls (/home/username/go/bin/gopls) SUCCEEDED
All tools successfully installed. You are ready to Go :).
てな感じで go install
してくれるようだ。
自動でアップデートしてくれるといいのだが…
参考図書
- Software Design (ソフトウェアデザイン) 2020年8月号 [雑誌]
- Software Design 編集部 (編集)
- 技術評論社 2020-07-18 (Release 2020-07-18)
- Kindle版
- B08CZ2C3NZ (ASIN)
特集記事は「Vim vs. Visual Studio Code」
- プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)
- 丸善出版 2016-06-20
- 単行本(ソフトカバー)
- 4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN), 9784621300251 (ISBN)
- 評価
著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。