Go と VS Code

no extension

どっちのセクションで書こう悩んだが,所詮ツールの話だし,こっち側で。

  1. パソコンに Visual Studio Code を導入する(再チャレンジ)
  2. Go と VS Code ← イマココ
  3. Markdown と VS Code
  4. Java と VS Code
  5. やっと Codespaces が使える

それでは前回の続き。 VS CodeGo 言語開発支援環境を入れる。 といっても一択だけどね。

インストールはこちら。

$ code --install-extension golang.go

一応 Google が公式に参加している拡張機能らしい。

しかも最近,こちらも事実上のオフィシャルである gopls が,この拡張機能の既定の language server となったようだ。

個人的にひとつだけ気に入らないところがあって,既定の設定のままではプロジェクト・フォルダを開いたときにトップに go.mod ファイルがないと上手く動かないみたいなんだよね(モジュール対応モードの場合)。

最初は拡張機能側の問題かと思っていたが,どうも gopls の制限らしい。

一応の回避策はあって settings.json に以下のオプションを設定することでトップ以外の複数の go.mod ファイルに対応できるようだ。

{
    "gopls": {
        "build.experimentalWorkspaceModule": true
    }
}

ただし go.mod ファイルで定義したモジュール名は開いたプロジェクト・フォルダ内で一意でなければならない。 名前が被ってるとめっさ怒られる。

まぁ,理屈は分からんでもないが,私の場合,ブログなどのドキュメント環境でサンプルコードを書き散らしていて,それらのモジュール名が大抵 “sample” だったりするので被りまくりなんだよなぁ sigh…

ちなみに,この experimentalWorkspaceModule オプションは一時的な措置なので将来的にはなくなるようだ。 それまでには何とかするということだろう。

それ以外の部分ではぶっちゃけ ATOMgo-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

と入力すると関連ツールのインストールおよびアップデートができる。

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 してくれるようだ。 自動でアップデートしてくれるといいのだが…

参考図書

photo
Software Design (ソフトウェアデザイン) 2020年8月号 [雑誌]
Software Design 編集部 (編集)
技術評論社 2020-07-18 (Release 2020-07-18)
Kindle版
B08CZ2C3NZ (ASIN)

特集記事は「Vim vs. Visual Studio Code」

reviewed by Spiegel on 2021-02-28 (powered by PA-APIv5)

photo
プログラミング言語Go
アラン・ドノバン (著), ブライアン・カーニハン (著), 柴田芳樹 (著)
丸善出版 2016-06-20 (Release 2021-07-13)
Kindle版
B099928SJD (ASIN)
評価     

Kindle 版出た! 一部内容が古びてしまったが,この本は Go 言語の教科書と言ってもいいだろう。感想はこちら

reviewed by Spiegel on 2021-05-22 (powered by PA-APIv5)