インストール方法
公式サイト「Download and install」を参考にインストールします。
各OS用のインストール方法は公式サイトをご確認ください。ここでは説明は省きます。
https://golang.org/doc/install
AWS EC2(Amazon Linux 2)に最新のGoをインストールする方法
Amazon Linux 2でGoをインストールする場合、普通に検索すると「amazon-linux-extras」を使ってインストールする情報が出てくると思います。
しかしこの方法では古いバージョンのGoしかインストールできません。(この記事の時点で go1.11.3)
Goの公式サイトで最新バージョンを確認します。(この記事の時点で go1.15.6)
下記のようにして最新のソースをダウンロードしてインストールします。
$ wget https://dl.google.com/go/go1.15.6.linux-amd64.tar.gz
$ sudo tar -C /usr/local -xzf go1.15.6.linux-amd64.tar.gz
$ export PATH=$PATH:/usr/local/go/bin
$ exec $SHELL -l
$ go version
go version go1.15.6 linux/amd64
構文チェックや自動整形ツールのインストール
よく使用される構文チェック(静的解析)やフォーマッタ(自動整形)ツールです。
標準パッケージに付属しているものは別途インスールする必要はありません。
構文チェックに関しては「govet」や「golint」は使用せず「GolangCI-Lint」をお勧めします。
GolangCI-Lint
非推奨になったツールの代わりにまとめて推奨ツールをインポートしてくれるのが「GolangCI-Lint」です。現時点ではこのツールを使用したらいいと思います。
インストールはOSごとに違うので、上記の公式サイトを参照ください。
自動的にインストールされるLinterの一覧は下記に記載されており、後述の「govet」も含まれています。
https://golangci-lint.run/usage/linters/
gofmt
goの標準パッケージに含まれるソースコード自動整形ツールです。
goimports
Go のインポート行を自動的に整理・追加してくれるツールです。go fmt + import を実行してくれるため、gofmtの上位互換と言えます。
goreturns
こちらはfmt + importに加えてさらに、function 内で戻り値に合わせた return の補完をしてくれます。基本的にgoreturnsを使用したらいいと思います。インストール方法は下記を参照。
https://github.com/sqs/goreturns
古い情報で非推奨のツールに注意
構文解析やコード整形で調べると、すでに非推奨(deprecated)となったツールの紹介が検索でヒットします。
Go言語界隈はまだまだ日進月歩で変化し続けていますので、ほんの一年前まで公式で使用されているツールが、新ツールに変わりたちまちサポート対象外になるケースがあります。
govet
goの標準パッケージに含まれる静的解析ツールです。上記の「GolangCI-Lint」に含まれています。
golint(※非推奨)
コードのコーディングスタイルの問題を検出するツールで、エラーと言うより提案をしてくれます。このツールも情報量も多いのですが非推奨(deprecated)となっています。
※個人的には「関数の上には必ずコメントをこの形式で書け!」とか、キャメルケースなのに「IdはIDと書け!」とか疑問符がつく指摘事項が多かったので、非推奨になってくれて良かったと思っています。
VSCodeの設定
Go言語の拡張機能
これは必須です。インストール方法などは公式サイトを参照。
https://marketplace.visualstudio.com/items?itemName=golang.Go
VSCodeの個別設定
ほんとはハードタブとか嫌いなのですが、公式であるgofmtのスタイルがハードタブになっているため、下記のようにしています。
自動整形は「goreturns」、構文解析は「GolangCI-Lint」を指定しています。
ファイル保存時にフォーマットをかけるようにしています。
{
"[go]": {
"editor.tabSize": 4,
"editor.insertSpaces": false,
"editor.formatOnSave": true,
"editor.formatOnPaste": false,
"editor.formatOnType": false
},
"go.formatTool": "goreturns",
"go.lintTool": "golangci-lint"
}
パッケージ管理ツール
Go Modules
これも古い情報が多く掲載されておりますが、Go 1,11より$GOPATHではなくGo Modulesを使用します。
また環境変数の管理の仕方もGo 1.13より変わっています。
https://github.com/golang/go/wiki/Modules
環境変数でGo Modulesを有効にして、初期化する方法は下記になります。(example.com/golang_echo_sampleの部分は適当です)
$ go env
$ go env -w GO111MODULE=on
$ go mod init example.com/golang_echo_sample
次の記事で、AWS(EC2)でサンプルソースを動かしてみます。