Alors que d'autres réponses le décrivaient complètement, pour les personnes "Montrez-moi le code", cela signifie essentiellement: créer des variables au niveau du package et exécuter la init
fonction de ce package.
Et (le cas échéant) la hiérarchie des variables et init
fonctions au niveau des packages des packages que ce package a importés.
Le seul effet secondaire qu'un package peut faire, sans être réellement appelé, est de créer des variables au niveau du package (publiques ou privées) et à l'intérieur de sa init
fonction.
Remarque : Il existe une astuce pour exécuter une fonction avant même la init
fonction. Nous pouvons utiliser des variables de niveau package pour cela en les initialisant à l'aide de cette fonction.
func theVeryFirstFunction() int {
log.Println("theVeryFirstFunction")
return 6
}
var (
Num = theVeryFirstFunction()
)
func init() { log.Println("init", Num) }
Kaveh Shahbazian
la source