Maison >développement back-end >Golang >Comment structurer correctement les modules et les projets Go dans Go 1.11 et au-delà ?

Comment structurer correctement les modules et les projets Go dans Go 1.11 et au-delà ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-15 18:25:15230parcourir

How to Properly Structure Go Modules and Projects in Go 1.11 and Beyond?

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!

Déclaration:
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