概要
半年ほど前から Go 言語の勉強を始めたのだが、何かと忙しく放置気味になってしまった。余裕ができたので久しぶりに VSCode を開いたものの、PC 交換時に環境移行を怠ってしまい、再び環境構築から Hello, world までやり直したのでその備忘録。今回は Mac での作業だが、Windows でもパスなどを随時読み替えれば OK。
前提条件
- macOS High Sierra 10.13.6
- bash 3.2.57(1)-release
- Homebrew 2.4.13
- VSCode 1.48.1
インストール
Homebrew 経由でインストール。
brew install go
バージョンは記事の執筆時点で 1.15
。
go version
go version go1.15 darwin/amd64
一応 Windows でもパッケージマネージャの Scoop 経由でインストールが可能。
PATH 関連
GOPATH
ソースコードや実行ファイル、コンパイル済みのパッケージファイルなどを保存するためのディレクトリを指定する。デフォルトでは $HOME/go
となってるので、特にこだわりがなければそのままホーム直下を指定。
echo 'export GOPATH=$HOME/go' >> ~/.bash_profile
GOROOT
SDK のディレクトリを指定する。Homebrew でインストールした場合は brew upgrade
でのバージョン更新が反映されないため、エイリアスへのパスを指定する。
echo 'export GOROOT=/usr/local/opt/go/libexec' >> ~/.bash_profile
VSCode
拡張機能
Marketplace から拡張機能をインストールする。以前は Microsoft のリポジトリで管理されていたが、Go のプロジェクトへ移行されたらしい。『Go』で検索すれば恐らく 1 番上に表示されるはず。
ツール群
拡張機能のインストール後 ⌘+⇧+P
でコマンドパレットを呼び出し、開発に必要なツール群をインストールする。
Go: Install/Update Tools
ツールは個別に選択が可能だが、取り敢えず全てにチェックして OK を押し、インストールを完了させる。
Hello, world
動作確認のためにお決まりのアレをやる。
mkdir -p $GOPATH/src/golang/hello
cd $GOPATH/src/golang/hello
touch hello.go
GOPATH 配下で新規にプロジェクトを作成。パスは適当。GitHub 上でパッケージを公開することから github.com/username/repository
にすることが多い。hello.go
という名前の空ファイルを生成したら、VSCode でコーディングしていく。
package main
import "fmt"
func main() {
fmt.Println("Hello, world")
}
⌃+⇧+^
でターミナルを呼び出して実行。
go run hello.go
Hello, world // 実行結果
問題なく Hello, world 出来れば一先ず環境構築は終了。
gopls
機能
gopls (pronounced: "go please") is the official language server for the Go language.
ざっくり言えば IDE で必要なコード補完や定義へのジャンプ、フォーマットなどをまるっと提供する機能のこと。Microsoft が定義した Language Server Protocol (LSP) に沿って実装されている。gopls は Go 公式の Language Server。現段階でサポートされるのは以下の通り。
- Autocompletion (コードの自動補完)
- Jump to definition (定義へのジャンプ)
- Signature help (ヒントの表示)
- Hover (カーソル位置の情報の表示)
- Document symbols (シンボル一覧の表示)
- References (参照へのジャンプ)
- Rename (命名変更)
導入
ここに書いてある内容を settings.json
に追加する。
"go.useLanguageServer": true,
"[go]": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true,
},
"editor.snippetSuggestions": "none",
},
"[go.mod]": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true,
},
},
"gopls": {
"usePlaceholders": true,
"staticcheck": false,
}
保存するとインストールを促す通知が表示されるので、『Install』をクリックすれば OK。