Maison > développement back-end > Golang > Qu'est-ce que le langage Go GOPATH

Qu'est-ce que le langage Go GOPATH

青灯夜游
Libérer: 2023-01-11 17:51:27
original
2024 Les gens l'ont consulté

GOPATH est une variable d'environnement utilisée dans le langage Go. Elle utilise un chemin absolu pour fournir le répertoire de travail du projet (également appelé espace de travail), qui est le chemin du fichier où est stocké le code du projet Golang. Le répertoire GOPATH est généralement : 1. bin, qui stocke les fichiers binaires générés par la compilation ; 2. pkg, qui comprend les trois dossiers XX_amd64, mod et sumdb ; 3. src, où est stocké le code du projet golang ;

Qu'est-ce que le langage Go GOPATH

L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.

1. Le concept de GOPATH

GOPATH est une variable d'environnement utilisée dans le langage Go. Elle utilise un chemin absolu pour fournir le répertoire de travail du projet (également appelé espace de travail), est l'endroit où se trouve le

répertoire de travail du projet (

également appelé

espace de travail). Le code du projet Golang est stocké dans le chemin du fichier, GOPATH convient au traitement de projets complexes composés d'une grande quantité de code source du langage Go et de plusieurs packages.

 Le répertoire de travail est un répertoire de référence relatif pour le développement de l'ingénierie. Par exemple, lorsque vous souhaitez écrire un ensemble de codes serveur dans l'entreprise, le bureau, l'ordinateur et la chaise inclus dans votre poste de travail sont votre espace de travail.

La notion d'espace de travail est similaire à la notion de répertoire de travail. Si vous n'utilisez pas la notion de répertoire de travail, lorsque plusieurs personnes développent, chacun a sa propre structure de répertoires, et l'emplacement de lecture des fichiers de configuration n'est pas uniforme

2. Utilisation de GOPATH GOPATH目录一般为:

1、bin 存放编译生成的二进制文件。比如 执行命令 go get github.com/google/gops,bin目录会生成 gops 的二进制文件。

2、pkg 其中pkg下面以下三个文件夹。

  •  XX_amd64: 其中 XX 是目标操作系统,比如 mac 系统对应的是darwin_amd64, linux 系统对应的是 linux_amd64,存放的是.a结尾的文件。
  •  mod: 当开启go Modules 模式下,go get命令缓存下依赖包存放的位置
  •  sumdb: go get命令缓存下载的checksum数据存放的位

3、src 存放golang项目代码的位置

Quest-ce que le langage Go GOPATH

 如下是一个完整的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
Copier après la connexion

三、造成问题

        在使用 GOPATH 模式下,我们需要将应用代码存放在固定的$GOPATH/src目录下,且如果执行go get使用第三方类库的时候会自动下载并安装到$GOPATH<. code> Le répertoire GOPATH est généralement :

1. bin stocke les fichiers binaires générés par la compilation. Par exemple, si vous exécutez la commande go get github.com/google/gops, le fichier binaire de gops sera généré dans le répertoire bin.

2. pkg Il y a trois dossiers sous pkg.
    • XX_amd64 : où XX est le système d'exploitation cible. Par exemple, le système mac correspond à darwin_amd64, le système linux correspond à linux_amd64, et les fichiers se terminant par .a sont stockés.

      mod : Lorsque le mode go Modules est activé, l'emplacement où les packages dépendants sont stockés dans le cache de commande go get
    • sumdb : L'emplacement où les données de somme de contrôle téléchargées par le cache de commande go get sont stockées

    • 3. stockage src projet golangL'emplacement du code
    • Quest-ce que le langage Go GOPATH
    • Voici le répertoire de développement d'un projet Go complet :

    • rrreee
Trois. Causer des problèmes

​ Utiliser GOPATH En mode, nous

devons stocker le code de l'application dans le répertoire fixe $GOPATH/src

, et si vous exécutez go get et utilisez une bibliothèque tierce, elle sera automatiquement téléchargée et installée dans le répertoire <code>$GOPATH.

Le code Golang du projet est mélangé avec des fichiers Golang tiers.

Si chaque projet nécessite les mêmes dépendances, nous téléchargerons un grand nombre de packages de dépendances tiers en double dans différentes srcs GoPath, qui prendront également de la place. . Une grande quantité d'espace disque

Inconvénients de GOPATH
  • Il faut spécifier le répertoire,

Lors de l'utilisation de la commande go get, la version à obtenir ne peut pas être spécifiée

Lors du référencement d'une troisième. -Les projets tiers, v1 et v1 ne peuvent pas être traités. Les problèmes de référence avec différentes versions telles que v2 et v3, car en mode GOPATH, les chemins du projet sont tous github.com/foo/project

🎜🎜 ne peut pas synchroniser les numéros de version tiers cohérents. Lors de l'exécution d'applications Go, il n'y a aucune garantie que d'autres auront la même version que la bibliothèque tierce dont vous comptez dépendre. 🎜🎜🎜🎜🎜🎜Nous définissons différents GoPaths pour différents projets. Les avantages sont très évidents : 🎜🎜🎜 Il est facile de gérer des projets avec un GoPath différent. C'est très clair pour nous de gérer plusieurs projets Golang. structure du projet. Si nous plaçons tous les projets sous le même package GoPath src, la structure du projet deviendra très confuse et difficile à gérer. 🎜🎜🎜Mais lorsque nous devons nous appuyer sur des packages tiers, les inconvénients de la configuration de différents GoPaths pour différents projets sont également très évidents : 🎜🎜🎜🎜🎜Si les packages dépendants de tiers sont mélangés avec nos propres packages Golang, cela nous donnera la gestion des fichiers de projet apporte certains problèmes. 🎜🎜🎜🎜 Différents GoPaths doivent télécharger des dépendances, il y aura donc beaucoup de dépendances en double sur le disque, ce qui occupera une grande partie de notre espace disque. 🎜🎜🎜🎜🎜🎜Ainsi, la configuration d'un répertoire GoPath pour résoudre le problème des dépendances en double, la configuration de différents répertoires GoPath pour résoudre le problème de la confusion dans la structure du projet Golang, est une question controversée en soi. 🎜🎜🎜

Afin de résoudre tous ces problèmes, Golang a finalement introduit le concept de GoModule.

Quest-ce que le langage Go GOPATH

【Recommandations associées : Tutoriel vidéo Go, Enseignement de la programmation

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal