GOPATH は Go 言語で使用される環境変数で、絶対パスを使用してプロジェクトの作業ディレクトリ (ワークスペースとも呼ばれます) を指定します。これは、Golang プロジェクト コードが保存されるファイル パスです。 GOPATH ディレクトリは一般的に次のとおりです: 1. bin (コンパイルによって生成されたバイナリ ファイルが保存されます); 2. pkg (3 つのフォルダー XX_amd64、mod、および sumdb が含まれます); 3. src (golang プロジェクト コードが保存される場所)。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
GOPATH は Go 言語で使用される環境変数であり、絶対パスを使用して 作業環境を提供します。プロジェクトのディレクトリ ( は ワークスペースとも呼ばれます)、 は Golang プロジェクト コードが保存されているファイル パス、GOPATH は多数の Go 言語ソース コードで構成される複雑なプロジェクトの処理に適していますそして複数のパッケージ。
作業ディレクトリは、エンジニアリング開発のための相対参照ディレクトリです。たとえば、社内で一連のサーバー コードを作成する場合、ワークステーションに含まれるデスクトップ、コンピューター、椅子がワークスペースになります。
ワークスペースの概念は、作業ディレクトリの概念に似ています。作業ディレクトリの概念を使わないと、複数人で開発する場合、各人が独自のディレクトリ構造を持ち、設定ファイルを読み込む場所が統一されません。
# 2. GOPATH の使用
1. bin にはバイナリが格納されます。コンパイルによって生成されるファイル。たとえば、 go get github.com/google/gops コマンドを実行すると、bin ディレクトリに gops のバイナリ ファイルが生成されます。 2.pkg このうち、pkg以下には3つのフォルダがあります。
XX_amd64: XX はターゲット オペレーティング システムです。たとえば、mac システムは darwin_amd64、linux システムは linux_amd64 に対応し、.a で終わるファイルが格納されます。 mod: go Modules モードが有効な場合、依存パッケージが go get コマンド キャッシュに保存される場所 sumdb: go get コマンドによってダウンロードされたチェックサム データの場所キャッシュは
- 3. src が
- golang プロジェクトを保存する場所
code
my-go // my-go为GOPATH目录 -- bin -- myApp1 // 编译生成 -- myApp2 // 编译生成 -- myApp3 // 编译生成 -- pkg 依赖包编译后的*.a文件// -- src -- MyApp1 // 项目1 -- models -- controllers -- others -- main.go -- MyApp2 // 项目2 -- models -- controllers -- others -- main.go
3. 問題の原因
GOPATH モードを使用する場合、 src
ディレクトリの固定$GOPATH ディレクトリ内。 プロジェクトの Golang コードは、サードパーティの Golang ファイルと混合されています。
各プロジェクトが同じ依存関係を必要とする場合、異なる GoPath src に多数の重複したサードパーティの依存関係パッケージをダウンロードします。また、多くのディスク容量を消費します。#GOPATH の欠点
go get コマンドを使用する場合、取得するバージョンは指定できません
しかし、サードパーティのパッケージに依存する必要がある場合、プロジェクトごとに異なる GoPath を設定することの欠点も非常に明白です。
サードパーティのプロジェクトを参照する場合は、v1、v2 などの異なるバージョンの問題を参照してくださいGOPATH モードではプロジェクトのパスがすべて github.com/foo/project
となるため、v3 などは扱えません。サードパーティのバージョン番号は同期できません。 Go アプリケーションを実行する場合、他のアプリケーションが期待される依存関係を持つという保証はありません。サードパーティ ライブラリは同じバージョンです。
- プロジェクトごとに異なる GoPath を設定しましたが、その利点は明らかです。
- プロジェクトの管理が簡単で、各プロジェクトは異なる GoPath であり、複数の Golang プロジェクトを管理するためにプロジェクト構造を非常に明確に処理できます。すべてのプロジェクトを同じ GoPath src パッケージの下に置くと、プロジェクト構造が非常に複雑になり、管理が困難になります。
第 3 章 サードパーティの依存パッケージと独自の Golang パッケージを混在させると、プロジェクト ファイル管理に特定の問題が発生します。
異なる GoPath は依存関係をダウンロードする必要があるため、ディスク上に重複した依存関係が多数存在し、多くのディスク領域を占有することになります。
これらすべての問題を解決するために、Golang は最終的に GoModule の概念を導入しました。
【関連する推奨事項: Go ビデオ チュートリアル 、プログラミング教育 ]
以上がGo言語とはGOPATHの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。