提问人:mnemotronic 提问时间:2/20/2017 最后编辑:Jonathan Hallmnemotronic 更新时间:1/16/2019 访问量:28587
软件包 “main” 和 func “main”
Package "main" and func "main"
问:
我看到并尝试过的介绍/示例 go progs 从
package main
并有
func main()
封装行中的“main”和函数行中的“main”之间有什么关系吗?我猜不是。 C/C++使用相同的“主”入口点。只是想确定一下。我还没有看到任何文档说使用“main”只是巧合。
答:
53赞
Cerise Limón
2/20/2017
#1
应用程序的入口点是包中的函数,如规范中所述:main
main
一个完整的程序是通过将一个未导入的包(称为主包)与它导入的所有包(传递地)链接起来创建的。主包必须具有包名称,并声明一个不带参数且不返回值的函数。
main
main
func main() { … }
程序执行首先初始化主包,然后调用函数 。当该函数调用返回时,程序将退出。它不会等待其他(非主要)goroutines完成。
main
语言规范在此上下文之外不会为名称赋予特殊含义。该名称不是保留名称。main
main
可以在非主包中声明函数。在这种情况下,它只是一个名为 .main
main
评论
2赞
Jeff
6/6/2018
但是,在除 main 之外的某个包中的文件中的 func main() 呢?
0赞
Cerise Limón
6/6/2018
@Jeff 如果包不是 ,则该函数不是应用程序入口点。它只是一个名为 .main
main
1赞
Jeff
6/6/2018
好的,在主包之外命名函数 main() 是不寻常的做法,还是表示意图?当然,在我所看到的情况下,代码以某种方式内置到可以从命令行调用的东西中。
1赞
Wildcard
1/16/2019
这似乎是单独问的(stackoverflow.com/q/50706238/5419599),但仍然不清楚这是一个坏主意、反模式还是没人关心的事情。
评论