本文旨在解釋 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 是為了:
目的 | 說明 |
---|---|
清晰可見 | 一眼看 |