仕事でGoを使う必要性がでてきたので、Goを勉強することにした。
環境
- macOS Catalina 10.15.7
- fish, version 3.1.2
- goenv 2.0.0beta11
goenvのインストール
$ brew install goenv
環境変数の設定
~/.config/fish/cnfig.fish
に以下を追加
set -x GOENV_ROOT $HOME/.goenv set -x PATH $GOENV_ROOT/bin $PATH eval (goenv init - | source) set -x PATH $GOPATH/bin $PATH
GOPATHは設定しない場合、デフォルトで$HOME/go
が設定される。
goenvの確認
$ goenv -v goenv 2.0.0beta11
goのインストール
$ goenv install -l Available versions: 1.2.2 1.3.0 . . . 1.15.6 1.15.7
一番新しいのを入れる
$ goenv install 1.15.7
Go Moduels環境に設定する
$ go env -w GO111MODULE=on
go modulesについて github.com goのバージョン管理ツールでRubyでいうGemみたいなものだと理解
wikiにそって動かしてみる。 GOPATHの外側にディレクトリを作成してGitHubと連携
$ mkdir -p /tmp/scratchpad/repo $ cd /tmp/scratchpad/repo $ git init -q $ git remote add origin https://github.com/my/repo
新しいモジュールを初期化する
$ go mod init github.com/my/repo go: creating new go.mod: module github.com/my/repo
コードを追加する (fishだとwikiどおりのヒアドキュメントが使えないので、bashにして実行)
$ cat <<EOF > hello.go package main import ( "fmt" "rsc.io/quote" ) func main() { fmt.Println(quote.Hello()) } EOF
ビルドして実行する
$ go build -o hello $ ./hello こんにちは世界。
go.modファイルをみるとrsc.io/quote v1.5.2
が定義されていることが確認できる
module github.com/my/repo go 1.15 require rsc.io/quote v1.5.2
GOPATHを確認するとバージョンができてることが確認できる
$ cd ~/go $ ls -l total 0 drwxr-xr-x 3 username staff 96 1 29 23:48 1.15.7/ # これができてる drwxr-xr-x 18 username staff 576 6 4 2020 bin/ drwxr-xr-x 4 username staff 128 10 2 2019 pkg/ drwxr-xr-x 6 username staff 192 9 6 15:36 src/
これでやっとコードが書ける。