kawabatas技術ブログ

試してみたことを書いていきます

Mac で Go の環境構築

概要

go の開発環境を設定し、go のプロジェクト作成までやったのでメモ。

goenv のインストール

goenv は、go 言語のバージョンを管理するもの。

go 言語版の rbenv や nodebrew のようなもの。

リポジトリこちら

$ brew install goenv

$ echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.bash_profile
$ echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(goenv init -)"' >> ~/.bash_profile

$ source .bash_profile

goenv コマンドを確認

$ goenv --help

インストールできるバージョンを確認

$ goenv install -l

go をインストール

$ goenv install 1.11.4

グローバルで使用するバージョンを指定

$ goenv global 1.11.4

ローカル(特定のディレクトリ)で使用するバージョンを指定

$ goenv local 1.11.4

go のバージョン確認

$ go version

go プロジェクトを作る

$ mkdir gotest
$ cd gotest/

$ goenv local 1.11.4
-> .go-version ファイルができる

go 1.11 で使えるようになった modules を使う

go 言語のパッケージ管理ツール。

go 言語版の gemfile や package.json のようなもの。

go 1.12 からデフォルトで使えるようになりそうだが、go 1.11 では export GO111MODULE=on とすることで使用できる。

direnv を使っているなら .envrc 書いておけばいいと思う。

GOPATH も書いておけば、プロジェクトごとに管理できていいのかも。

export GO111MODULE=on
export GOPATH=$PWD/go

パッケージインストール先の GOPATH のフォルダを作成

$ mkdir go

go.mod ファイルを作成

$ go mod init gotest

本来はこんな感じになるっぽい
$ go mod init github.com/<アカウント名>/<リポジトリ名>

go のサンプルのコード

$ cat <<EOF > hello.go
package main

import (
    "fmt"
    "rsc.io/quote"
)

func main() {
    fmt.Println(quote.Hello())
}
EOF

ビルド&実行

$ go build
$ ./gotest
こんにちは世界。

できた。

go.mod にパッケージ追加されてる。

$ cat go.mod
module gotest

require rsc.io/quote v1.5.2

go.sum というファイルもできている。

gemfile.lock や package.lock.json 的なものっぽい。