Go Modules

スポンサーリンク

Go Modulesとは

Go 1.11 から追加された外部パッケージを管理する機構です。
それまでは、Go のコードは外部パッケージも含めてすべて $GOPATH/src 以下に置かなくてはいけないという決まりがあったのですが、Go Modules を使うことにより、任意の場所に置くことができるようになりました。
ただし、Go Modules を使って自動的にダウンロードしてくれるパッケージは $GOPATH 以下に置かれるので、$GOPATH が使われなくなるわけではありません。

使い方

簡単な使い方は https://github.com/golang/go/wiki/Modules#quick-start にある Quick Start を試してみるのが良さそうなので、試してみました。

まず、適当にプロジェクト用のディレクトリを作成して、Quick Start に書かれているように git remote の設定を行います。

% mkdir -p /path/to/anyware/repo
% cd /path/to/anyware/repo
% git init -q
% git remote add origin https://github.com/my/repo

go mod init にプロジェクトを指定して初期化します。

% go mod init github.com/my/repo
go: creating new go.mod: module github.com/my/repo

初期化すると go.mod ファイルが作成されますので確認してみます。

% cat go.mod
module github.com/my/repo

go 1.14

下記のようなコードを作ります。

% cat <<EOF > hello.go
package main

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

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

ビルドして実行します。

% go build -o hello
go: finding module for package rsc.io/quote
go: found rsc.io/quote in rsc.io/quote v1.5.2
% ./hello
こんにちは世界。

ビルド時に自動的にコードが使っているパッケージをダウンロードし、go.mod ファイルを更新するので、go.mod ファイルの中身を再度確認してみます。

% cat go.mod
module github.com/my/repo

go 1.14

require rsc.io/quote v1.5.2

コメント

タイトルとURLをコピーしました