【最新版】Goの環境構築とLintの活用

Goをインストール
brew経由でGoをインストールします。
% brew install go
....
go 1.21.6 is already installed but outdated (so it will be upgraded).
==> Fetching downloads for: go
✔︎ Bottle Manifest go (1.25.4) [Downloaded 7.5KB/ 7.5KB]
✔︎ Bottle go (1.25.4) [Downloaded 57.5MB/ 57.5MB]
==> Upgrading go
1.21.6 -> 1.25.4
==> Pouring go--1.25.4.arm64_sequoia.bottle.tar.gz
🍺 /opt/homebrew/Cellar/go/1.25.4: 14,439 files, 203.1MB
==> Running `brew cleanup go`...
Disable this behaviour by setting `HOMEBREW_NO_INSTALL_CLEANUP=1`.
Hide these hints with `HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).
Removing: /opt/homebrew/Cellar/go/1.21.5... (12,543 files, 253.0MB)
Removing: /opt/homebrew/Cellar/go/1.21.6... (12,545 files, 253.0MB)
Goをインストールできているか確認
Goのバージョンを確認できたらインストールOKです。
% go version
go version go1.25.4 darwin/arm64
go modについて
次に、go mod initを使ってモジュールを初期化する必要があります。
このコマンドは、モジュールのディレクトリに新しいgo.modファイルを作成し、モジュールの依存関係やバージョン情報をトラッキングします。
% go mod init hello
例えば、helloパッケージをexample.com/helloモジュールとして公開した場合には、https://example.com/helloからダウンロードして、helloパッケージとしてインポートするイメージです。
つまり、モジュールはhttps://module-nameとなる場所からダウンロードされることが前提なので、モジュール名にはGitHubのリポジトリを指定する場合が多いようです。
今回は、特別公開などしないので、適当にhelloとしています。
VSCode・Cursorで使うGoの拡張機能
https://marketplace.visualstudio.com/items?itemName=golang.Go
Goの拡張機能をCursorに入れておきます。
これを入れておくことでコードジャンプや構文のサポートなどを受けることができます。
Golangci-lintを使ったリンター設定の紹介
今回は、あくまで紹介・導入方法くらいになりますが、知っておくと良さそうだったのでまとめました。
brew経由でGolangci-lintをインストール
brew経由でgolangciをインストールして、バージョン確認ができていればインストールOKです。
% brew install golangci-lint
% golangci-lint --version
golangci-lint has version 2.6.2 built with go1.25.4 from dc16cf4 on 2025-11-14T02:47:46Z
エディターの設定ファイルに反映
Cursorのsettings.jsonで以下のように拡張機能とlintの設定を記載してください。
{
"editor.formatOnSave": true,
"[go]": {
"editor.defaultFormatter": "golang.go"
},
"go.useLanguageServer": true,
"gopls": {
"formatting.gofumpt": true
},
"go.lintTool": "golangci-lint",
"go.lintFlags": ["--config=${workspaceFolder}/.golangci.yaml", "--fast"]
}
yamlファイルでlintルールの作成
.golangci.yamlを作成してlintルールなどを作ります。
今回はざっくり全て有効にしてみます。
version: 2
linters:
enable-all: true
有効化されているlintの確認方法
ちなみに、どのリンターが有効になっているかは、golangci-lint help lintersで確認できました。
Enabled by default linters:現在有効になっているリンターが出力Disabled by default linters:無効なリンターが出力
% golangci-lint help linters
こんな感じで有効と無効がわかります。

各lintの意味と説明に関しては、以下のドキュメントに全て記載されているのでチェックしてみてください。
他にも、golangci-lint formattersなどもあります。
lintの実行
それでは、golangci-lint runを使用してlintを実行してみましょう。(-vオプションで詳細な情報が出力可能)
出力結果にエラーがなく、issue0になっていれば問題ないです。
% golangci-lint run -v
【実務向け】Github ActionsにGolangci-lintを組み込む
golangci/golangci-lint-actionを導入することでGithub上で自動チェックしてくれます。
細かい設定は省略しますが、必要に応じて導入した方が良さそうですね。
Hello World!してみる
hello.goというファイルを作成して以下コードを記述します。
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
go runを実行してprintされていればOKです。
% go run .
Hello, World!
まとめ
この記事では、Goの開発環境構築とlintツールの活用方法について解説しました。
golangci-lintを導入することで、コード品質を保ちながら効率的な開発が可能になります。
利用可能なlinterを確認してプロジェクトに適したものを選択できるのも良いポイントですね。
また、Github Actionsと組み合わせることで、自動的なコード品質チェックを実現できます。
Goでの開発を始める際の参考になれば幸いです。
Anycloudでは一緒に働くメンバーを募集しています!
Anycloudは、ユーザーの心を動かす体験を届けることを大切にしています。フルリモート・フルフレックスの環境のもと、ライフスタイルに合わせた働き方を実現しながら挑戦したい方を歓迎します。詳細はこちらをご覧ください。
