Go言語とはGOPATH

青灯夜游
リリース: 2023-01-11 17:51:27
オリジナル
2026 人が閲覧しました

GOPATH は Go 言語で使用される環境変数で、絶対パスを使用してプロジェクトの作業ディレクトリ (ワークスペースとも呼ばれます) を指定します。これは、Golang プロジェクト コードが保存されるファイル パスです。 GOPATH ディレクトリは一般的に次のとおりです: 1. bin (コンパイルによって生成されたバイナリ ファイルが保存されます); 2. pkg (3 つのフォルダー XX_amd64、mod、および sumdb が含まれます); 3. src (golang プロジェクト コードが保存される場所)。

Go言語とはGOPATH

このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。

1. GOPATH の概念

GOPATH は Go 言語で使用される環境変数であり、絶対パスを使用して 作業環境を提供します。プロジェクトのディレクトリ ( ワークスペースとも呼ばれます)、 は Golang プロジェクト コードが保存されているファイル パス、GOPATH は多数の Go 言語ソース コードで構成される複雑なプロジェクトの処理に適していますそして複数のパッケージ。

作業ディレクトリは、エンジニアリング開発のための相対参照ディレクトリです。たとえば、社内で一連のサーバー コードを作成する場合、ワークステーションに含まれるデスクトップ、コンピューター、椅子がワークスペースになります。

ワークスペースの概念は、作業ディレクトリの概念に似ています。作業ディレクトリの概念を使わないと、複数人で開発する場合、各人が独自のディレクトリ構造を持ち、設定ファイルを読み込む場所が統一されません。

# 2. GOPATH の使用

##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

##以下は完全な Go プロジェクトの開発ディレクトリです:

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
ログイン後にコピー

Go言語とはGOPATH3. 問題の原因

GOPATH モードを使用する場合、 src

ディレクトリの固定

$GOPATH/ にアプリケーション コードを追加し、go get

を実行してサードパーティのクラス ライブラリを使用すると、自動的にダウンロードされてインストールされます。

$GOPATH ディレクトリ内。 プロジェクトの Golang コードは、サードパーティの Golang ファイルと混合されています。 各プロジェクトが同じ依存関係を必要とする場合、異なる GoPath src に多数の重複したサードパーティの依存関係パッケージをダウンロードします。また、多くのディスク容量を消費します。#GOPATH の欠点

ディレクトリを指定する必要があります。

go get コマンドを使用する場合、取得するバージョンは指定できません
  • サードパーティのプロジェクトを参照する場合は、v1、v2 などの異なるバージョンの問題を参照してくださいGOPATH モードではプロジェクトのパスがすべて github.com/foo/project

  • となるため、v3 などは扱えません。サードパーティのバージョン番号は同期できません。 Go アプリケーションを実行する場合、他のアプリケーションが期待される依存関係を持つという保証はありません。サードパーティ ライブラリは同じバージョンです。

  • プロジェクトごとに異なる GoPath を設定しましたが、その利点は明らかです。
  • プロジェクトの管理が簡単で、各プロジェクトは異なる GoPath であり、複数の Golang プロジェクトを管理するためにプロジェクト構造を非常に明確に処理できます。すべてのプロジェクトを同じ GoPath src パッケージの下に置くと、プロジェクト構造が非常に複雑になり、管理が困難になります。
しかし、サードパーティのパッケージに依存する必要がある場合、プロジェクトごとに異なる GoPath を設定することの欠点も非常に明白です。

第 3 章 サードパーティの依存パッケージと独自の Golang パッケージを混在させると、プロジェクト ファイル管理に特定の問題が発生します。

異なる GoPath は依存関係をダウンロードする必要があるため、ディスク上に重複した依存関係が多数存在し、多くのディスク領域を占有することになります。

  • したがって、依存関係の重複の問題を解決するには GoPath ディレクトリを設定し、Golang プロジェクト構造の混乱の問題を解決するには別の GoPath ディレクトリを設定する必要があります。それ自体は興味深いアイデアです。物議を醸す問題。
  • これらすべての問題を解決するために、Golang は最終的に GoModule の概念を導入しました。

    Go言語とはGOPATH

    【関連する推奨事項: Go ビデオ チュートリアル プログラミング教育 ]

以上がGo言語とはGOPATHの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート