前文
序文
前回の記事では、我々は、コンフィギュレーション、外出先言語の開発環境を導入しました
本章では、プロジェクト構造を、外出先言語、プロジェクト管理、依存関係の管理をご紹介します。この記事では、我々は集中します
gopath
gopathは何ですか
ゴー言語の開発環境構成の記事では、我々は、コンフィギュレーション導入
gopath
およびgoroot
手順の環境変数ではなく、その中の深さの説明を。あなたは、端末であってもよく、go env
またはgo env gopath
特定の構成を表示します
C:\Windows\system32> go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\jackson\AppData\Local\go-build
set GOENV=C:\Users\jackson\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\jackson\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=c:\go
...
go1.8した後、あなたがgopathを指定しない場合、gopathがデフォルトです。
マックでは、Linuxがあります
$HOME/go
隣の窓
%USERPROFILE%\g
gopath
これは、店舗内のスペースに行くの作業言語として理解することができるsrc
、bin
、pkg
3つのフォルダ
go/
├── bin
├── pkg
└── src
$GOPATH/bin
して、ディレクトリに格納go install
バイナリがインストールされています。オペレーティングシステムの使い方PATH変数$GOPATH/pkg
ディレクトリストアは、OBJファイル(例えば、MACの下など、異なるオペレーティングシステムや異なる、に基づいてファイル名をプリコンパイルdarwin_amd64
コンパイラにフォローアップをスピードアップします)。ほとんどの開発者は、このディレクトリにアクセスする必要はありません。後に導入される、MODファイルはpkgの下に保存されますgo module
依存。$GOPATH/src
私たちのプロジェクトの行くコードを格納するディレクトリ。通常、各リポジトリは、1つ以上のパッケージのは、各パッケージは、1つまたは複数のGoのソースファイルのディレクトリに含まれている含まれている(例えば、Gitリポジトリで管理される)多くのバージョン管理リポジトリが含まれています。このように、全体のパスは次のようになります。
go/
├── bin
└── main.exe
├── pkg
├── darwin_amd64
└── mod
└── src
├── github.com
│ ├── tylfin
│ │ ├── dynatomic
│ │ └── geospy
│ └── uudashr
│ └── gopkgs
└── golang.org
└── x
└── tools
我々はgithubのプロジェクトからコードを取得したり、他の場所で、私たちが使用することができますに行きたいときgopath、より多くの効果を持つ
go get
コマンドを。この時点で、プログラムはに格納されたコードがデフォルトになります$GOPATH/src
ディレクトリ。例を引いてgo get github.com/dreamerjackson/theWayToGolang
次のように、ディレクトリ構造は次のとおりです。
go/
├── bin
├── pkg
└── src
└── github.com
└── dreamerjackson
└── theWayToGolang
私たちが使用する場合は、パラメータを、他のすべての項目がプロジェクトになります一括ダウンロードに依存ディレクトリ
go get
-u
$GOPATH/src
もう一つの特徴のgopathは明確なパッケージのインポート位置です。我々は以前helloworlプログラムでは、我々はビルトイン行く言語インポート、組織コードパッケージを通過、導入
fmt
パッケージを。私たちは、第三者をインポートするときにそれを行うにはどのようにすべきですか?実際には、我々は、サードパーティ製のパッケージとしてプロジェクトをインポートした場合、など
import "blue/red"
実際の引用は、$GOPATH/src/blue/red
ファイルからのコード。
同様に、としてインポート
import "github.com/gobuffalo/buffalo"
実際の引用は、$GOPATH/src/github.com/gobuffalo/buffalo
ファイルからのコード。
ここでは、サードパーティのパッケージを説明するために例を使用します
まず、
$GOPATH/src
新しいフォルダを作成しmymath
たフォルダに新しいファイルを作成し、add.go
» mkdir mymath
» cd mymath
» touch add.go
add.goは、ルールの言語が行くである、次のように、読み込みエクスポート機能に注意を払う必要があることは大文字でなければなりません。
package mymath
func Add(a int, b int) int {
return a + b
}
その後で$GOPATH/src
完全に呼び出すことができますmain.goファイル作成mymath
のパッケージadd
の機能を。
package main
import (
"fmt"
"mymath"
)
func main() {
result := mymath.Add(1, 2)
fmt.Println("result:", result)
}
することにより
go run main.go
、出力を実行するために1+2
結果を3
gopathのメリット
他の面倒な設定言語と比較すると、外出先で言語ワークスペースの
gopath
構成は、理解しやすい比較的単純ですgopathので全体のコードを編成するためのファイルシステムは、より簡潔な、構造が、単一のワークスペースに限定されるものであること。
gopath并没有解决版本依赖的问题,而将其留给了其他工具去实现。正因为如此,gopath中的代码就是一个唯一的master分支,并且强制使用各个模块最新的代码。
总结
本文介绍了gopath的含义、功能、优劣、以及如何通过GOPATH来组织项目,导入第三方库。
在go1.13之后,go官方已经开始全面拥抱
go module
.我们在下文中,将介绍go module
的原理和用法,以及如何通过go module
进行go语言的依赖管理与项目组织。