Что такое функция init()

«Что такое функция init()» — вопрос из категории Golang, который задают на 24% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Функция init() в Go — это специальная функция, которая автоматически выполняется перед вызовом main(). Она используется для инициализации пакета: настройки переменных, подключения к БД, регистрации зависимостей и т.д.

Особенности:

  • Может быть несколько init() в одном файле (выполняются в порядке объявления).
  • Вызываются для каждого пакета в порядке импорта (рекурсивно).
  • Не принимает аргументы и не возвращает значения.

Пример:

package main

import "fmt"

var dbConn string

func init() {
    dbConn = "user:pass@tcp(localhost:3306)/db"
    fmt.Println("Init DB:", dbConn)
}

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

Вывод:

Init DB: user:pass@tcp(localhost:3306)/db  
Main started