В одном файле может быть несколько функций init(). Все они вызываются автоматически при инициализации пакета, в порядке их объявления в файле. Явно вызвать init() нельзя. Порядок выполнения init между файлами пакета - по имени файла (лексический).
func init() { fmt.Println("first") }
func init() { fmt.Println("second") }
// При загрузке пакета: first, second
init() выполняется после инициализации глобальных переменных пакета. Используется для регистрации драйверов (например, import _ "github.com/lib/pq"), инициализации глобального состояния.