Le langage Go est un langage compilé fortement typé qui introduit une fonction spéciale function-init(). La fonction init(), comme la fonction main(), est une fonction réservée dans le langage Go, sauf que la fonction init() n'a aucun paramètre d'entrée ni aucune valeur de retour.
La fonction init() est la première fonction à être exécutée avant l'exécution du programme. Tant que le package est importé, la fonction init() sera automatiquement exécutée. En d'autres termes, la fonction init() peut être considérée comme le constructeur d'un package, utilisé pour initialiser certaines données requises par le package ou effectuer certaines opérations nécessaires.
Plusieurs fonctions init() peuvent être définies dans un package, et elles seront exécutées dans l'ordre de définition. Cependant, cela n'est pas recommandé car l'ordre dans lequel plusieurs fonctions init() sont exécutées peut être très imprévisible. Par conséquent, la seule suggestion est d’essayer d’éviter de définir plusieurs fonctions init() dans un package à moins qu’il ne soit vraiment nécessaire d’effectuer certaines opérations d’initialisation en séquence.
Ci-dessous, nous utilisons quelques exemples pour mieux comprendre le rôle de la méthode init() :
Premier exemple :
package main import "fmt" func init() { fmt.Println("init方法被调用") } func main() { fmt.Println("main方法被调用") }
Après avoir exécuté le programme, vous verrez le résultat suivant :
init方法被调用 main方法被调用
À partir de cet exemple, nous pouvons vu que quoi qu’il arrive, la méthode init() sera exécutée avant la méthode main(). Par conséquent, nous pouvons utiliser la méthode init() pour initialiser des variables globales ou appeler des fonctions dans d'autres packages, etc.
Deuxième exemple :
package packageA import "fmt" func init() { fmt.Println("packageA中的init方法被调用") }
package packageB import ( "fmt" "packageA" ) func init() { fmt.Println("packageB中的init方法被调用") } func Test() { packageA.init() }
package main import ( "fmt" "packageB" ) func main() { fmt.Println("main方法被调用") packageB.Test() }
L'exécution du programme ci-dessus obtiendra le résultat suivant :
packageA中的init方法被调用 packageB中的init方法被调用 main方法被调用 packageA中的init方法被调用
De la sortie, nous pouvons clairement voir : lorsque nous importons le packageB, la méthode init() du packageA est d'abord exécutée, puis l'init( ) du packageB est exécutée, et enfin la méthode main() est exécutée. Lorsque nous appelons la méthode Test() de packageB dans la méthode main(), parce que la méthode init() de packageA a déjà été exécutée, la méthode init() de packageA ne sera plus appelée.
En bref, la fonction init() joue un rôle très important et est l'un des composants nécessaires au fonctionnement du programme. Que vous définissiez la fonction init() dans un package ou appeliez la fonction init() dans un autre package, vous devez comprendre les caractéristiques pertinentes de la fonction init() afin de mieux utiliser le langage Go pour le développement de programmes.
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!