シリーズ
Go勉強(1) mac+VSCode+Go環境を設定
Go勉強(2) kubernetes client-goのexamplesをbuildする
Go勉強(3) kubernetes client-goのexamplesを読んでみる
[Go勉強(4) kubernetes client-goでPodのwatcher(TUI)を書いてみる]
(https://qiita.com/oruharo/items/668d708cead0ad261346)
[Go勉強(5) kubernetes client-goでPodのwatcher(TUI)を書いてみる2]
(https://qiita.com/oruharo/items/b7a131bf3eda36dd08a3)
変更履歴
- 2019-10-24 VSCodeで候補表示が遅いため、
gocode/gocode-gomodをgoplsに変更。
はじめに
Goの勉強を始めます。まずは環境準備です。
| 前提環境 | |
|---|---|
| OS | macOS Mojava 10.14.6 |
| インストール済ソフト | Homebrew、Visual Studio Code |
| ■参考 | |
| ・Install the Go tools(本家) | |
| ・初めてのGo | |
| ・他言語から来た人がGoを使い始めてすぐハマったこととその答え |
Goのイントール から hello world
GOPATHは$HOME/goとなります。
※あえて設定しないことでGOPATHは$HOME/goと見なされます(Go1.8以降の仕様)。
$ brew install go
:
$ go version
go version go1.13.1 darwin/amd64
$ mkdir -p $HOME/go/src/hello
$ cd $HOME/go/src/hello
$ cat << EOF > hello.go
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
EOF
$ go build
$ ./hello
hello, world
vscodeにGoの拡張機能追加
マーケットプレースからGo for Visual Studio Codeを追加。

詳細タブのHow to use this extension?を参考に以下の設定を行ます。
Go tools that the Go extension depends onを追加
コマンドパレットctrl+shift+PからGo:Install/Update Toolsを選択。
gocodeとgocode-modules以外を選択してOKを押下。


- インストールしなかった
gocode、gocode-modulesはModules対応が不十分なのかgo.modの状態によって候補表示がされなかったり、候補表示が遅かったりします("."を押してから5秒くらい)。 代わりにgoplsを使います。 - 既にインストールしている場合は、$HOME/go/binから
gocode、gocode-modulesを削除します。
goplsを追加
ターミナルからgoplsをインストール。
参考:gopls User Guide
$ export GO111MODULE=on
$ go get golang.org/x/tools/gopls@latest
go: finding golang.org/x/tools latest
go: downloading golang.org/x/tools v0.0.0-20191024074452-7defa796fec0
go: extracting golang.org/x/tools v0.0.0-20191024074452-7defa796fec0
Go 1.13.以降はGO111MODULE=onは不要になったと思いますが、これを設定しないと上記のgo getがエラーになるようです。
gopls VSCodeを参考にVSCodeの設定ファイルに以下の設定を追加。
{
:
"go.useLanguageServer": true,
"[go]": {
"editor.snippetSuggestions": "none",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true,
}
},
"gopls": {
"usePlaceholders": true, // add parameter placeholders when completing a function
// Experimental settings
"completeUnimported": true, // autocomplete unimported packages
"watchFileChanges": true, // watch file changes outside of the editor
"deepCompletion": true, // enable deep completion
},
"go.toolsEnvVars": {
"GO111MODULE": "on",
},
}
ここでもGO111MODULE:onが設定されてないとVSCodeでGoソースを開いた時にimport文のところにエラーが出ます。 また、候補表示がされません。
参考:x/tools/gopls: could not import github.com/google/trillian
完了すると$HOME/go/にbinとpkgフォルダができて上で選択したものが格納されます。

おわりに
とりあえずプログラミングの準備ができました。