Я попытался найти точное объяснение того, что функция init()
делает в Go. Я прочитал, что говорит Effective Go, но я не был уверен, полностью ли я понял, что он сказал. Точное предложение, в котором я не уверен, следующее:
И, наконец, означает, наконец, что: init вызывается после того, как все объявления переменных в пакете оценили их инициализаторы, и они оцениваются только после того, как все импортированные пакеты были инициализированы.
Что all the variable declarations in the package have evaluated their initializers
означают all the variable declarations in the package have evaluated their initializers
? Означает ли это, что если вы объявляете "глобальные" переменные в пакете и его файлах, init() не будет работать до тех пор, пока не будет выполнена вся его оценка, а затем запустит всю функцию init и затем main() при запуске. /main_file_name?
Я также читаю Марк Саммерфилд иди книга следующее:
Если у пакета есть одна или несколько функций init(), они автоматически выполняются перед вызовом функции main() основного пакета.
В моем понимании, init()
имеет значение только тогда, когда вы запускаете намерены запустить main(), верно? или основной пакет. Кто-нибудь точнее понимает init()
стесняйтесь меня поправлять