Как вызывается функция main () из основного пакета, несмотря на то, что она является приватной при запуске приложения? - PullRequest
0 голосов
/ 30 апреля 2020

В Golang функция, которая не начинается с заглавной буквы, является частной функцией, которая не может быть доступна вне пакета, тогда как получается, что функция main() из пакета main доступна при запуске приложения? Существуют ли специальные условия для звонка main()?

1 Ответ

1 голос
/ 30 апреля 2020

main() - особый случай. «Экспортированный» и «неэкспортированный» - это качества идентификаторов, используемых компилятором для определения, разрешено ли одному пакету напрямую ссылаться на идентификатор из другого пакета. Но main() не вызывается как обычная функция. Ваш main() вызывается как последний шаг в процессе запуска Go среды выполнения, который включает, среди прочего, запуск планировщика и сборщика мусора, инициализацию переменных пакета и вызов функций init() (еще один особый случай).

Вот объяснение spe c , подробный анализ инициализации времени выполнения и вот источник точки входа main() времени выполнения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...