Question :
Comment organiser efficacement le code Go à l'aide de packages "internes" ?
Initiale Problème :
Bien que le projet soit placé en dehors de GOPATH, l'importation de packages internes depuis main.go échoue, à moins que le chemin relatif ne soit utilisé (par exemple, "./internal/foo|bar").
Introduction des modules :
Avec l'introduction des modules dans Go v1.11 et ci-dessus, placer le projet dans $GOPATH/src n'est plus nécessaire. Au lieu de cela, vous devez créer un fichier go.mod pour spécifier l'emplacement de chaque module.
Exemple :
Considérez la structure de projet suivante :
project/ go.mod main.go internal/ bar/ bar.go go.mod foo/ foo.go go.mod
Fichiers go.mod :
Les fichiers go.mod pour les packages internes sont simple :
module bar go 1.14
module foo go 1.14
Code dans les packages internes :
// bar.go package bar import "fmt" // Bar prints "Hello from Bar" func Bar() { fmt.Println("Hello from Bar") } // foo.go package foo import "fmt" // Foo prints "Hello from Foo" func Foo() { fmt.Println("Hello from Foo") }
main.go :
// main.go package main import ( "internal/bar" "internal/foo" ) func main() { bar.Bar() foo.Foo() }
Projet go.mod Fichier :
Le projet go.mod Le fichier informe Go sur les packages internes et leurs emplacements :
module project go 1.14 require internal/bar v1.0.0 replace internal/bar => ./internal/bar require internal/foo v1.0.0 replace internal/foo => ./internal/foo
Remarques importantes :
Exécution :
L'exécution du fichier main.go imprimera désormais :
Hello from Bar Hello from Foo
Cet exemple montre comment utiliser efficacement des packages internes dans un projet Go à l'aide de modules.
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!