Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/config.php on line 61

Deprecated: substr(): Passing null to parameter #1 ($string) of type string is deprecated in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/config.php on line 61
La función init()
Source Code

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/main/articles.php on line 18

La función init()


Tiempo de lectura: 1 minutos

Cada vez que se declare una función init(), Go la cargará y ejecutará antes que cualquier otra cosa en ese paquete.



La función init()

La función init en Go es una funcionalidad poderosa que permite realizar tareas de inicialización antes de que el programa comience a ejecutarse.

var a string

func init() {
    fmt.Println("Incializa la variable")
    a = 1
}

func main() {
    fmt.Printf("Valor de a: %d\n", a)
}

Orden de ejecución

Se ha de tener en cuenta que la función init() no se ejecuta antes que cualquier otra función. En realidad solo se ejecuta antes de la función main(). por ejemplo:

var valor = AsignaValor()

func asignaValor() int {
    return 42
}

func init() {
    valor = 0
}

func main() {
    fmt.Println("El valor es %d\n", valor)
}

El resultado es 0 porque asignaValor() se ejecuta antes que init() e init() se ejecuta antes que main().

init() en los paquetes

Es importante saber que siempre se llama a init(), independientemente de si hay un archivo principal o no, por lo que si se importa un paquete que tiene una función init(), se ejecutará.

Además, se puede tener varias funciones init() por paquete; se ejecutarán en el orden en que aparecen en el archivo. Este diagrama es muy clarificador:

Go
Función init()
Esquema de llamadas para ejecutar init() 

Varias funciones init()

Finalmente, pueden haber dos funciones init() en un package

var counter int

func init() {
    counter++
}

func init() {
    counter++
}

func main() {
    fmt.Printf("Contador: %d\n", counter)
}

El resultado será 2 debido a las inicializaciones. ¿Para qué puede servir esto? Principalmente para dividir grandes bloques de código de inicialización y evitar tener código monolítico.


Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/navigation.inc.php on line 10

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/navigation.inc.php on line 21
Xavier es un desarrollador senior full stack y opera desde la ciudad mediterránea de Barcelona. Le encantan las tecnologías de software y está convencido que el desarrollo de software es un proceso colaborativo y abierto.
Y es un apasionado de la astronomía y de la fotografía. Lo puedes encontrar en:
Comparte este post


Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/footer.inc.php on line 24