Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
67
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

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

シリーズ

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)を書いてみる
Go勉強(5) kubernetes client-goでPodのwatcher(TUI)を書いてみる2

変更履歴

  • 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

おわりに

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
67
Help us understand the problem. What are the problem?