Функция init
Функция init - это специальная функция в Go,
которая автоматически вызывается при инициализации пакета.
Она не принимает параметров и не возвращает значений.
Функция init выполняется до функции main
и используется для настройки начального состояния пакета,
инициализации переменных, установки соединений с базами данных
или выполнения других подготовительных операций.
Синтаксис
func init() {
// код инициализации
}
Пример
Давайте создадим пакет с функцией init, которая
выводит сообщение при инициализации:
package main
import "fmt"
func init() {
fmt.Println("Package initialized")
}
func main() {
fmt.Println("Main function started")
}
Результат выполнения кода:
"Package initialized"
"Main function started"
Пример
В одном пакете может быть несколько функций init.
Они выполняются в порядке объявления в файле:
package main
import "fmt"
func init() {
fmt.Println("First init")
}
func init() {
fmt.Println("Second init")
}
func main() {
fmt.Println("Main function")
}
Результат выполнения кода:
"First init"
"Second init"
"Main function"
Пример
Функция init часто используется для инициализации
пакетов при импорте. Давайте рассмотрим пример с
инициализацией глобальной переменной:
package main
import "fmt"
var config map[string]string
func init() {
config = make(map[string]string)
config["host"] = "localhost"
config["port"] = "8080"
fmt.Println("Config initialized")
}
func main() {
fmt.Println("Host:", config["host"])
fmt.Println("Port:", config["port"])
}
Результат выполнения кода:
"Config initialized"
"Host: localhost"
"Port: 8080"
Смотрите также
-
функцию
main,
которая является точкой входа в программу -
порядок инициализации
пакетов и переменных,
который определяет последовательность вызова функций init -
область видимости
пакета,
в которой объявляются и используются функции init -
функции в
блочной области видимости,
которые ограничены своими блоками кода