La fonction init du langage go est utilisée pour initialiser le package. Cette fonction est une fonctionnalité importante du langage go
a les éléments suivants. Caractéristiques :
1 La fonction init est une fonction utilisée pour initialiser le package avant l'exécution du programme, comme l'initialisation des variables dans le package, etc.
2 Chaque package peut avoir plusieurs fonctions d'initialisation
3 Chaque fichier source d'un package peut également avoir plusieurs fonctions d'initialisation
4 L'ordre d'exécution de plusieurs fonctions d'initialisation dans un même package n'est pas clairement défini (explication) dans le langage Go
5 Les fonctions init des différents packages déterminent l'ordre d'exécution des fonctions d'initialisation en fonction des dépendances importées par le package
6 La fonction init ne peut pas être appelée par d'autres fonctions, mais est automatiquement appelée avant la fonction principale est exécuté
L'exemple suivant est extrait de "la voie à suivre". Les différences entre les systèmes d'exploitation sont masquées lors de l'initialisation de l'application
var prompt = "Enter a digit, e.g. 3 " + "or %s to quit." func init() { if runtime.GOOS == "windows" { prompt = fmt.Sprintf(prompt, "Ctrl+Z, Enter") } else { // Unix-like prompt = fmt.Sprintf(prompt, "Ctrl+D") } }
Les deux fichiers go suivants le démontrent :
1 Un package Ou le fichier go peut contenir plusieurs fonctions init,
2 la fonction init est exécutée avant la fonction principale,
3 la fonction init est automatiquement appelée et ne peut pas être appelée dans d'autres fonctions, explicitement L'appel signalera que la fonction n'est pas définie
code gprog.go
package main import ( "fmt" ) // the other init function in this go source file func init() { fmt.Println("do in init") } func main() { fmt.Println("do in main") } func testf() { fmt.Println("do in testf") //if uncomment the next statment, then go build give error message : .\gprog.go:19: undefined: init //init() }
code ginit1.go Notez qu'il y a deux fonctions d'initialisation dans ce fichier source
package main import ( "fmt" ) // the first init function in this go source file func init() { fmt.Println("do in init1") } // the second init function in this go source file func init() { fmt.Println("do in init2") }
Compile. les deux fichiers ci-dessus : go build gprog.go ginit1.go
Le résultat de l'exécution de gprog.exe après la compilation montre que la fonction init dans gprog.go est exécutée en premier, puis les deux fonctions init dans ginit1. go sont exécutés. Ensuite, la fonction principale est exécutée.
E:\opensource\go\prj\hellogo>gprog.exe do in init do in init1 do in init2 do in main
Remarque : Dans "le chemin à parcourir" (P70), il y a une description en rouge ci-dessous, ce qui signifie qu'un fichier source go ne peut avoir qu'une seule fonction d'initialisation,
mais celle ci-dessus ginit1. Les deux fonctions init de go sont exécutées normalement après la compilation et l'exécution
Par conséquent, cette phrase devrait être une faute de frappe.
4.4.5 Init-functions Apart from global declaration with initialization, variables can also be initialized in an init()-function. This is a special function with the name init() which cannot be called, but is executed automatically before the main() function in package main or at the start of the import of the package that contains it. Every source file can contain only 1 init()-function. Initialization is always single-threaded and package dependency guarantees correct execution order.
Recommandé : aller au tutoriel vidéo
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!