Qu'est-ce que le langage Go 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), 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 ;
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项目代码的位置
如下是一个完整的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
三、造成问题
在使用 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.Trois. Causer des problèmes
- 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![]()
- rrreee
Voici le répertoire de développement d'un projet Go complet :
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
.
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 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.
【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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

La différence entre l'impression de chaîne dans le langage go: la différence dans l'effet de l'utilisation de fonctions println et string () est en Go ...

Le problème de l'utilisation de Redessstream pour implémenter les files d'attente de messages dans le langage GO consiste à utiliser le langage GO et redis ...

Quelles bibliothèques de GO sont développées par de grandes entreprises ou des projets open source bien connus? Lors de la programmation en Go, les développeurs rencontrent souvent des besoins communs, ...

Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Lorsque vous utilisez Goland pour le développement du langage GO, de nombreux développeurs rencontreront des balises de structure personnalisées ...

GO Language fonctionne bien dans la construction de systèmes efficaces et évolutifs. Ses avantages incluent: 1. Haute performance: compilé en code machine, vitesse de course rapide; 2. Programmation simultanée: simplifier le multitâche via les goroutines et les canaux; 3. Simplicité: syntaxe concise, réduction des coûts d'apprentissage et de maintenance; 4. Plate-forme multipliée: prend en charge la compilation multiplateforme, déploiement facile.

La suppression automatique des contraintes de type de fonction générique Golang dans les utilisateurs de VScode peut rencontrer un problème étrange lors de l'écriture de code Golang à l'aide de VScode. quand...
