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

Junior
921 просмотров
AFK Offer AI

init() — специальная функция, выполняется автоматически при импорте пакета, до main().

package db

var conn *sql.DB

func init() { var err error conn, err = sql.Open("postgres", os.Getenv("DB_URL")) if err != nil { log.Fatal(err) } }

Порядок: 1. Инициализация переменных пакета 2. init() (может быть несколько в одном файле и пакете) 3. main() вызывается последней

Порядок между пакетами — по зависимостям: если main импортирует db, а db импортирует config, то init: config → db → main.

Не злоупотребляй init():

  • Затрудняет тестирование (нельзя контролировать момент вызова)
  • Скрывает зависимости
  • Лучше явная инициализация: db.Connect(cfg)

Следующий вопрос

HTTP/1.1 vs HTTP/2?