シリーズ
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
フォルダができて上で選択したものが格納されます。
#おわりに
とりあえずプログラミングの準備ができました。