グライドはうまく機能しますが、モジュールを使用する理由
Go 1.11では、Goモジュールと呼ばれる公式のパッケージ管理ツールが追加されました。Go modが登場する前は、最も一般的に使用されているパッケージマネージャーは政府、グライドなどでした。これらのツールは、複数のバージョンなどのGOPATHへの依存など、オフウォールダウンロードなどの各ダウンロードなど、パッケージ管理に対するGoの期待に応えませんでした。制御等 次に、Goモジュールが登場しました。GOPATHには依存せず、プロジェクトにのみ関連しています。エージェントを指定でき、バージョンごとに簡単に制御でき、GOPATHの依存関係をなくし、Goの将来の開発の基礎を築きました。
Go modコマンドを使用してパッケージを管理する
コマンド | 説明文 |
---|---|
初期化する | 現在のディレクトリアイテムの下でmodを初期化します |
整頓する | 依存モジュールをプルし、未使用のモジュールを削除します |
ベンダーに行く | 依存関係をベンダーにコピーする |
編集に行く | go.modを編集する |
確認に行きます | 正しい依存関係を確認する |
実際、基本的にはinitとtidyを使用するだけで十分です。
環境変数を設定する
GO111MODULEに
は、off、on、auto、off、onの3つの値があります。autoは、現在のディレクトリにgo.modファイルがあるかどうかに応じて、モジュール関数を使用するかどうかを判断します。どちらのモードを使用しても、デフォルトではモジュール関数はGOPATHディレクトリ内の依存ファイルを検索しません。
GOPROXY
は、プロキシサービスhttps://goproxy.ioを設定します。自分でプロキシサービスを設定し、プロキシサーバーのアドレスとしてGOPROXYを設定することもできます。vim〜
/ .bash_profile
は、2行の構成
エクスポートGO111MODULE = on
export GOPROXY = httpsを追加しました://goproxy.io
ソース〜/ .bash_profile
栗をあげる
プロジェクトmyproject
main.goを作成します
package main
import (
"github.com/satori/go.uuid"
"fmt"
)
func main() {
uid := uuid.NewV4()
fmt.Println(uid)
}
Go modコマンドを実行し、initとtidy
go mod init
go: creating new go.mod: module myproject
go mod tidy
go: finding golang.org/x/tools latest
go: downloading golang.org/x/tools v0.0.0-20200415034506-5d8e1897c761
go: extracting golang.org/x/tools v0.0.0-20200415034506-5d8e1897c761
go: finding gopkg.in/check.v1 latest
go: downloading gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f
go: extracting gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f
go: finding github.com/niemeyer/pretty latest
go: downloading github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e
go: extracting github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e
go: downloading github.com/kr/text v0.1.0
go: extracting github.com/kr/text v0.1.0
実行結果のコンパイル
go build main.go
./main
6723138d-ab2c-4de6-b996-732362985548
Go modによって生成されたメインファイルgo.modを見ることができます
cat go.mod
module myproject
go 1.13
require (
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
github.com/satori/go.uuid v1.2.0
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
)
各パッケージの後にバージョンが続きます。ブランチを切り替える場合は、以降のバージョンを必要なブランチに任意に切り替えることができます。
require (
github.com/niemeyer/pretty master
github.com/satori/go.uuid v1.2.0
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
)
ローカルコードを使用して、リモートコードブランチを置き換えることもできます。
リモートブランチgithub.com/satori/go.uuidの代わりに、次の/data/www/go/src/go.uuid を使用できます。
go.modの最後の行に次のコードを追加します
replace github.com/satori/go.uuid => /data/www/go/src/go.uuid
Go modの使用は特に簡単ではありません。