Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpPkIn 50 of 280 menu
◀ ▶

Функция запуска в Go

Функция без параметров с особым именем выполняется сама, еще до точки входа. Ее не вызывают из main: среда запуска находит все такие функции в пакете и выполняет их при старте программы.

У одного пакета может быть несколько функций запуска в разных файлах. Порядок между файлами не стоит использовать для логики, но для простой инициализации этого достаточно.

Добавим печать из функции запуска и из main:

package main import "fmt" func init() { fmt.Println("init") } func main() { fmt.Println("main") }

На экране сначала строка "init", затем "main". Функция запуска отработала раньше точки входа, хотя в исходнике она записана выше main не по смыслу, а по правилу языка.

Так же ведут себя функции запуска в подключенных пакетах: они выполняются до main в main, пока компилятор собирает все дерево импортов. В своих пакетах ими часто регистрируют настройки или проверяют данные до первого сценария.

Дан следующий код:

package main import "fmt" func init() { fmt.Println("a") } func main() { fmt.Println("b") }

Напишите, в каком порядке появятся две строки на экране.

Добавьте вторую функцию запуска в setup.go с package main, которая печатает "setup", и запустите программу.

Скажите, можно ли вызвать функцию запуска вручную из main как обычную функцию.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить