Comment structurer les modules Golang et la structure du projet d'une nouvelle manière
Dans le système de modules mis à jour introduit dans Go 1.11, l'approche du référencement les modules de différents répertoires ont évolué. Explorons comment y parvenir d'une nouvelle manière.
Ancienne méthode
Auparavant, les modules devaient être placés dans le GOPATH pour être utilisés. En règle générale, un dossier était créé dans le GOPATH pour chaque projet. Tout ce qui se trouve dans le répertoire « src » peut être importé et exporté dans un logiciel.
Par exemple, considérons la structure de projet suivante :
github.ibm.com/ └── Alessio-Savi └── GoLog-Viewer ├── conf ├── database ├── datastructure ├── GinProva.go ├── README.md ├── request └── resources
Pour importer le fichier datastructures.go, l'instruction suivante pourrait être utilisé :
import( "github.ibm.com/Alessio-Savi/GoLog-Viewer/datastructure" )
New Way
Avec l'introduction des modules go, le l'utilisation de GOPATH n'est plus nécessaire. Au lieu de cela, la commande 'go mod init' peut être utilisée pour initialiser un nouveau module. Cela génère deux fichiers : go.mod et go.sum.
Le fichier go.mod répertorie les bibliothèques requises et le code Go externe nécessaire au module, tandis que go.sum contient les hachages de ces bibliothèques.
Par exemple, considérons la bibliothèque GoGPUtils :
mkdir GoGPUtils cd $_ go mod init github.com/alessiosavi/GoGPUtils
Le fichier go.mod ressemblerait à quelque chose comme ceci :
module github.com/alessiosavi/GoGPUtils go 1.13 require ( github.com/alessiosavi/ahocorasick v0.0.3 golang.org/x/tools v0.0.0-20191031220737-6d8f1af9ccc0 // indirect )
Pour importer la bibliothèque ahocorasick dans le module, l'instruction suivante peut être utilisée :
import ( ahocorasick "github.com/alessiosavi/ahocorasick" )
Dans votre exemple de scénario, pour accéder au module2 à partir du module1, vous auriez besoin pour inclure le chemin d'accès au module2 dans le fichier go.mod du module1. Par exemple :
require ( github.com/your-username/module2 v0.0.1 )
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!