本文旨在解释 Go 语言中 package main 、 func main() 和main.go的关系及其使用规则,解决如下典型问题:
- 是否可以在一个项目中定义多个 func main()?
- 是否可以在非 package main 中写 func main()?
- 多个文件中都写 func main() 会冲突吗?
- main.go是必须的命名方式吗?
- 正确的结构设计与推荐实践是什么?
🧱 一、核心概念
1.package main
- 唯一被 Go 编译器当作“程序入口”的包名
- 一个 Go 程序的 main() 函数 必须位于 package main 中
2.func main()
- 程序启动的入口函数
- 只能出现在 package main 中
- 必须无参数、无返回值签名:func main()
3. main.go
main.go 是必须的吗?
❌ 不是必须的。Go 编译器只关心是否存在 package main + func main(),不关心文件名。
✅ 可以替换为:server.go, run.go, serverDemo.go等任意 .go 文件,只要包含合法的入口函数。
✅ 推荐仍使用 main.go 是为了:
目的 | 说明 |
---|---|
清晰可见 | 一眼看 |