Golang開発:環境に関する記事(7)Go Modの使用

グライドはうまく機能しますが、モジュールを使用する理由

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の使用は特に簡単ではありません。

おすすめ

転載: www.cnblogs.com/feixiangmanon/p/12709221.html