サカナ未遂

プログラミング、筋トレ、子育て

macでGO言語の開発環境を作る

仕事で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が設定される。

github.com

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/

これでやっとコードが書ける。