Ответ 1
Точка входа для приложения является main
функцией в main
пакете, как описано в спецификации:
Полная программа создается путем связывания одного не импортированного пакета, называемого основным, со всеми пакетами, которые она импортирует, транзитивно. Основной пакет должен иметь имя пакета
main
и объявлять функциюmain
которая не принимает аргументов и не возвращает значения.func main() { … }
Выполнение программы начинается с инициализации основного пакета и последующего вызова функции
main
. Когда этот вызов функции возвращается, программа завершается. Он не ждет завершения других (неосновных) программ.
Спецификация языка не придает особого значения имени main
за пределами этого контекста. Имя main
не является зарезервированным именем.
Можно объявить main
функцию в неосновных пакетах. В таких случаях это просто функция с именем main
.