Функция init() в GoLang работает следующим образом: она автоматически выполняется в начале выполнения программы, когда происходит инициализация пакета. 1
Функция не принимает аргументов и не возвращает значений. 1 Она выполняется до функции main(). 15 В исходном файле может быть определено несколько функций init(), и они будут вызваны одна за другой в порядке объявления. 2
Инициализация пакета происходит только один раз, даже если он импортирован несколько раз. 3
Например, если основной пакет импортирует пакет A, а тот, в свою очередь, зависит от пакета B, то порядок действий будет таким: 1
Функция init() используется для инициализации глобальных переменных пакета, которые нельзя инициализировать с помощью выражения инициализации. 3 Например, для инициализации клиента базы данных требуется сетевой вызов. 3 Также она применяется для запуска чего-либо, что нужно выполнить один раз. 3