Функция init

Функция init - это специальная функция в Go, которая автоматически вызывается при инициализации пакета. Она не принимает параметров и не возвращает значений. Функция init выполняется до функции main и используется для настройки начального состояния пакета, инициализации переменных, установки соединений с базами данных или выполнения других подготовительных операций.

Синтаксис

gofunc init() {
  // код инициализации
}

Пример

Давайте создадим пакет с функцией init, которая выводит сообщение при инициализации:

gopackage main

import "fmt"

func init() {
  fmt.Println("Package initialized")
}

func main() {
  fmt.Println("Main function started")
}

Результат выполнения кода:

go"Package initialized"
"Main function started"

Пример

В одном пакете может быть несколько функций init. Они выполняются в порядке объявления в файле:

gopackage main

import "fmt"

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

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

func main() {
  fmt.Println("Main function")
}

Результат выполнения кода:

go"First init"
"Second init"
"Main function"

Пример

Функция init часто используется для инициализации пакетов при импорте. Давайте рассмотрим пример с инициализацией глобальной переменной:

gopackage 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"])
}

Результат выполнения кода:

go"Config initialized"
"Host: localhost"
"Port: 8080"

Смотрите также

  • функцию main,
    которая является точкой входа в программу
  • порядок инициализации пакетов и переменных,
    который определяет последовательность вызова функций init
  • область видимости пакета,
    в которой объявляются и используются функции init
  • функции в блочной области видимости,
    которые ограничены своими блоками кода