Lors de l'organisation du code Go, les packages internes offrent un moyen de maintenir la modularité et l'encapsulation au sein d'un projet. Dans la structure de code donnée, un package "interne" est créé dans le répertoire "projet".
Cependant, comme mentionné , l'importation depuis un package interne en dehors de son répertoire parent n'est pas possible. En effet, les packages internes ne sont pas exportés et ne sont accessibles qu'à partir de l'arborescence des sources du projet. Les importations externes depuis l'extérieur du répertoire du projet ne fonctionneront que pour les packages situés dans l'arborescence $GOPATH/src.
Pour résoudre les problèmes d'importation, le répertoire du projet peut être placé sous $GOPATH/src. Cela garantit que les packages internes sont accessibles au package principal situé dans "project/main.go."
Alternativement, avec l'introduction de modules dans Go v1.11 et versions ultérieures, vous pouvez définir le module de votre projet en créant un fichier go.mod. Ce fichier précise l'emplacement de chaque module au sein de votre projet. Voici un exemple de la façon dont il serait configuré :
project/ go.mod main.go internal/ bar/ bar.go go.mod foo/ foo.go go.mod
go.mod pour project/internal/bar :
module bar go 1.14
bar. aller :
package bar import "fmt" // Bar prints "Hello from Bar" func Bar() { fmt.Println("Hello from Bar") }
go.mod pour projet/interne/foo :
module foo go 1.14
foo.go :
package foo import "fmt" // Foo prints "Hello from Foo" func Foo() { fmt.Println("Hello from Foo") }
main.go :
package main import ( "project/internal/bar" "project/internal/foo" ) func main() { bar.Bar() foo.Foo() }
Dans cette configuration, le fichier go.mod définit le chemin du module et les informations de dépendance pour chaque package interne. L'instruction replace garantit que Go sait où trouver les packages internes, même s'ils se trouvent en dehors de l'arborescence $GOPATH/src standard.
Avec cette approche, vous pouvez facilement organiser votre code à l'aide de packages internes et y accéder de manière transparente. du package principal, offrant à la fois modularité et accessibilité au sein de votre projet.
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!