ローカルにGo環境ver 1.13

インストール

  • Goインストール
brew install go

GO111MODULE のデフォルト値

  • Go 1.11 で導入された $GO111MODULE は、Go modules を使うかどうか
  - on にされていれば Go modules を使う (module-aware mode)
  - off にされていれば従来どおり $GOPATH を使う (GOPATH mode)
  - auto の場合 $GOPATH/src の外に対象のリポジトリがあり、 go.mod が存在する場合は module-aware mode、そうでない場合は GOPATH mode

環境変数

export PATH=$GOPATH/bin:$PATH
export GOPATH=$HOME/go
export GO111MODULE=on

モジュール初期化

mkdir サンプルプロジェクト作成
cd サンプルプロジェクト作成

モジュール初期化

go mod init github.com/so-hee/modules_example

Go modules 特徴

  • リポジトリのモジュール化
  • セマンティックバージョニングによるモジュールのバージョニング
  • go.mod による依存関係の管理
  • go.sum による依存モジュールのチェックサムの管理

Go Module Ecosystem

Go 1.12 までは Go modules のサポートは限定的でしたが、Go 1.13 ではさらに以下の点で強化が行われます。

  • Module Index
  • Module Authentication
  • Module Mirrors
  • Module Proxy

GOPATH mode から module-aware mode

  • 今まで(GOPATH mode)は標準pkg以外を全部 $GOPATH 以下のディレクトリで管理する仕様
  • プロジェクトも $GOPATH/src 配下に作成
  • module-aware mode では標準pkg以外の全てのパッケージをモジュールとして扱う
  • モジュールの管理やビルドが任意のディレクトリで可能になりました。