Go言語をVSCodeで開発するための最初の一歩
Updated Date: 2024/01/01 14:47
Go言語開発をVSCodeで真面目にやり始めて数ヶ月経った。様々な苦労のなか、ようやくLinterやファイル保存時の自動フォーマットがまともにできるようになったので、そのプロジェクトのテンプレートを作ってみた。
https://github.com/bon10/go-develop-template
工夫したところ
Linterとしてgolangci-lintを採用
golangci-lintは大量のlinterを内蔵している便利なlinter。
どういうlinterがあってそれぞれどういう役割りなのかは以下のサイトがとても参考になった。
golangci-lintを理解する - golangci-lint に搭載されている linter を学ぶ
linterを最大限に使うために動かしてみて競合が起きてしまったものや、goのバージョンが適用しないものなどを都度disableに追加していった。そのため、人やプロダクトによってはもっとdisableに追加する必要があるかもしれない。
gofumptを採用
linterやVSCodeのためのフォーマッタに、 gofumpt
というgofmtやgoimportよりも制約の多いフォーマッタを使っている。
これを使うためにLanguage Serverとしてgoplsを立ち上げる必要があったり、golangci-lintを使うためにちょっと工夫が必要だったりして割と大変だった。
この工夫とは、 .golancgi.yml
の以下の部分である。
1
2
3
4
linters-settings:
gofumpt:
lang-version: '1.20'
module-path: growthstock/api
この指定がない場合、golangci-lintとVSCodeでフォーマットの相違が出てしまうため保存/git commitのたびにimport文の順序が違うということが起きていた。(実はgolangci-lintのドキュメントにちゃんと書いてあるので読んでおけば全く問題なかったのだが……)
そんな感じで、今後新しいプロジェクトをGoでやる場合のテンプレとして使っていこうと思っている。