Invocation d'une fonction de package sans préfixe de package
Dans Go, l'importation d'un package copie effectivement ses identifiants exportés dans la portée du package d'importation. Cependant, il existe des cas où l'on peut souhaiter accéder aux fonctions du package sans utiliser le nom de son package comme préfixe. Cette question explore différentes méthodes pour y parvenir.
Une approche est la technique de « l'importation de points ». La spécification Go indique que l'utilisation d'un point (.) Sans nom de package importe tous les identifiants exportés de ce package dans la portée du fichier du package actuel. Cela permet un accès direct aux fonctions importées sans préfixe.
<code class="go">package main import . "fmt" // import all exported identifiers from "fmt" func main() { Println("hey there") }</code>
Cependant, cette technique est déconseillée dans la communauté Go car elle peut rendre le code plus difficile à lire en masquant la source d'un identifiant.
Alternativement, on peut déclarer une variable au niveau du package faisant référence à la fonction souhaitée. Cette approche consiste à importer le package et à déclarer une variable contenant une référence à la fonction.
<code class="go">package main import ( "fmt" ) var Println = fmt.Println // declare a package-level variable referencing fmt.Println func main() { Println("Hello, playground") }</code>
Enfin, l'alias de type peut être utilisé pour faire référence aux types déclarés dans les packages importés.
<code class="go">package main import ( "fmt" ) type ScanState = fmt.ScanState // type alias fmt.ScanState func main() { // use ScanState as a type without the "fmt." prefix }</code>
Bien que ces méthodes permettent d'éviter de préfixer les noms de packages lors de l'appel de fonctions, il est important de noter que la communauté Go encourage généralement la dénomination explicite et évite l'importation de points.
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!