【问题标题】:Package "main" and func "main"包“main”和func“main”
【发布时间】:2019-01-16 08:05:31
【问题描述】:

我看过并尝试过的 intro/sample go progs 开始于

package main

并且拥有

func main()

package 行中的“main”和 func 行中的“main”有什么关系吗?我猜不是。 C/C++ 使用相同的“主”入口点。只是想确定一下。我没有看到任何文档说使用“main”只是巧合。

【问题讨论】:

  • 当然不是巧合,他们都这样命名是有充分理由的。

标签: go


【解决方案1】:

应用程序的入口点是mainas described in the specification 中的main 函数:

一个完整的程序是通过将一个名为主包的单个未导入包与它导入的所有包传递链接来创建的。主包必须有包名main,并声明一个不带参数也不返回值的函数main

func main() { … }

程序执行从初始化主包开始,然后调用函数main。当该函数调用返回时,程序退出。它不会等待其他(非主)goroutine 完成。

语言规范在此上下文之外没有为名称main 赋予特殊含义。名称main 不是保留名称。

可以在非主包中声明main 函数。在这种情况下,它只是一个名为 main 的函数。

【讨论】:

  • 但是在 main 以外的某个包中的文件中的 func main() 呢?
  • @Jeff 如果包不是main,那么该函数不是应用程序入口点。这只是一个名为main的函数。
  • 好的,在主包之外命名一个函数 main() 是不寻常的做法还是意味着意图? Afaict,在我看到的情况下,代码以某种方式内置到可以从命令行调用的东西中。
  • 这似乎是单独提出的 (stackoverflow.com/q/50706238/5419599),但仍不清楚这是一个坏主意、反模式还是没人关心的东西。
猜你喜欢
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
  • 2013-11-04
  • 1970-01-01
  • 2019-09-05
  • 2012-03-05
  • 2021-10-20
相关资源
最近更新 更多