Go: init()

V Go je funkce main vstupním bodem aplikace. Je to ta funkce, která se vykoná, když vybildovanou aplikaci spustíte. Příkazem return v této funkci pak vykonávání programu končí.

Nejjednoduší Go aplikace pak může vypadat takto:

package main

import "fmt"

func main() {
	fmt.Println("Hello, Pepa!")
}

Výstup do konzoli je jasný: Hello, Pepa!

Co byste pak, s vědomím informací o funkci main, řekli, že udělá následující kód:

package main

import "fmt"

func init() {
	fmt.Println("inir()")
}

func main() {
	fmt.Println("Hello, Pepa!")
}

No protože se volá main, pak je výsledek jasný: Hello, Pepa!. Ale ouha. vypíše se následující:

init()
Hello, Pepa!

Je to tak, init() se provede před main()

A aby toho nebylo málo, pak v Go funguje i následující kód:

package main

import "fmt"

func init() {
	fmt.Println("1. nit()")
}

func init() {
	fmt.Println("2. init()")
}

func main() {
	fmt.Println("Hello, Pepa!")
}

Přesně tak. funkci init můžete zadefinovat vícekrát. To se vám s žádnou jinou funkcí nepodaří.

Výsledek pak bude očekávatelný:

1. nit()
2. init()
Hello, Pepa!

Funkci init můžete mít v každém zdrojovém souboru své aplikace. Ta se provede vždy, když soubor budete importovat do jiného souboru pomocí klíčového slova import.

Pokud budete soubor importovat vícekrát, funkce init se provede jen jednou.