golangクイックスタート[7.1] - プロジェクトと依存関係の管理-gopath

前文

序文

  • 前回の記事では、我々は、コンフィギュレーション、外出先言語の開発環境を導入しました

  • 本章では、プロジェクト構造を、外出先言語、プロジェクト管理、依存関係の管理をご紹介します。この記事では、我々は集中します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これは、店舗内のスペースに行くの作業言語として理解することができるsrcbinpkg3つのフォルダ

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语言的依赖管理与项目组织。

参考资料


おすすめ

転載: blog.51cto.com/13784902/2475102