Golang func main () в пакетах, отличных от основного?

Jeff спросил: 12 мая 2018 в 04:16 в: go

В случае, например, helloworld, имя пакета является основным, и есть также функция func main (). Но я также видел код, который func main (), который находится в другом пакете. Код, похоже, кажется, что он может использоваться как отдельная программа. Итак, что значит иметь func main () с выражением пакета, отличным от "main пакета"?


1 ответ

peterSO ответил: 12 мая 2018 в 05:19

Язык программирования Go определяется его спецификацией.


Спецификация языка программирования Go

Выполнение программы

Полная программа создается путем связывания единого, невозвращенного пакета с пакетом main со всеми пакетами, которые он импортирует, транзитивно. Пакет main должен иметь имя пакета main и declarea function main, который не принимает аргументов и не возвращает значения.

func main() { … }

Выполнение программы начинается с инициализации пакета main , а затем при вызове функции main. Когда этот вызов функции возвращается, программа завершает работу. Он не ждет, пока другие ( non-main ) goroutines не будут завершены.


Имя функции main не имеет особого значения вне package main.