Mientras que otras respuestas lo describen completamente, para la gente de "Muéstrame el código", esto básicamente significa: crear variables de nivel de paquete y ejecutar el init
función de ese paquete.
Y (si corresponde) la jerarquía de las variables y init
funciones a nivel de paquete de los paquetes que este paquete ha importado.
El único efecto secundario que puede producir un paquete, sin ser llamado realmente, es creando variables a nivel de paquete (público o privado) y dentro de su init
función.
Nota : Hay un truco para ejecutar una función incluso antes de la init
función. Podemos usar variables de nivel de paquete para esto inicializándolas usando esa función.
func theVeryFirstFunction() int {
log.Println("theVeryFirstFunction")
return 6
}
var (
Num = theVeryFirstFunction()
)
func init() { log.Println("init", Num) }