79
70

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Go勉強(1) mac+VSCode+Go環境を設定

Last updated at Posted at 2019-10-06

シリーズ

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-gomodgoplsに変更。

#はじめに

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を追加。
スクリーンショット 2019-10-05 18.01.29.png
詳細タブのHow to use this extension?を参考に以下の設定を行ます。

#Go tools that the Go extension depends onを追加
コマンドパレットctrl+shift+PからGo:Install/Update Toolsを選択。
gocodegocode-modules以外を選択してOKを押下。
スクリーンショット 2019-10-06 8.34.17.png
スクリーンショット 2019-10-24 7.13.32.png

  • インストールしなかったgocodegocode-modulesはModules対応が不十分なのかgo.modの状態によって候補表示がされなかったり、候補表示が遅かったりします("."を押してから5秒くらい)。 代わりにgoplsを使います。
  • 既にインストールしている場合は、$HOME/go/binからgocodegocode-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の設定ファイルに以下の設定を追加。

settings.json
{
        :
    "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/binpkgフォルダができて上で選択したものが格納されます。
スクリーンショット 2019-10-24 23.17.46.png

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

79
70
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
79
70

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?