Go语言的main()函数

1,202 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情

main()函数

1. main()函数只能声明在main包中,不能声明在其他包中。

结构释义:

 package main                                  //包的声明
 import "fmt"                                   //引入包
 func main() {                                   //函数
 }

解析: main函数作为程序的运行唯一入口,如果main函数没有存在于main包中则程序就无法指明程序的内存空间位置,在程序运行编译时就会运行出错。

举例: 当有一个main函数存在于test包中,能否顺利编译打印出“幸福没有那么容易”。

 package test                                                     //包的声明
 import "fmt"                                                      //引入包
 func main() {                                                       //函数
    fmt.Println("幸福没有那么容易")                              //语句&表达式输出
 }

终端提示编译报错,无法输出想要的结果:img

将例子中的test包名替换成包名main后

终端输出:img

结构解析:

 package main                                                           //包的声明

包声明:package main 定义了包名。package main 代表当前的 main.go 文件属于哪个包,其中 package 是 Go 语言声明包的关键字,main 是要声明的包名。

结论:main函数作为程序的唯一入口,只能声明在main包中。

2. 一个main包中必需仅有一个main函数,不能出现两个或者多个。

解析: 一个main包中应该只允许存在一个main()函数,golang函数不支持重载,一个包不能有两个函数名一样的函数。main()函数作为函数编译的执行主入口,如果同时出现两个函数执行入口,系统就会无法选择正确的执行入口从而报错。

举例: 当一个main包中同时存在两个相同main函数,那是否能输出两个相同的函数值,假设均输出“知链”。

 func main() {                                                       //函数
    fmt.Println("幸福没有那么容易")                              //语句&表达式输出
 }
 func main() {                                                       //函数
    fmt.Println("幸福没有那么容易")                              //语句&表达式输出
 }

终端显示:img

显示重复声明编译报错。

当去掉一个main函数以后,函数正常输出。

终端输出:img

结构解析:

 func main() { }                                                  //函数    

函数:func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。

 fmt.Println("幸福没有那么容易")                              //语句&表达式输出

语句&表达式输出:fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。函数内语句依照main函数内依次执行。

结论:一个main包中仅有一个main函数。

3. 一个go程序如果没有main()函数,程序就不能够正常的运行。

解析: main()函数作为Go语言应用程序的入口函数,只有当一个Go程序中存在一个函数入口时,函数内的语句表达式才能被编译执行从而输出结果。

举例: 当一个简单的go程序没有main()函数时,它能输出打印结果么?

 func text() {                                                           //函数  
    fmt.Println("Hello World!")                                 //语句&表达式输出
 }

输出结果:img

程序不能正常打印,且会在运行时报错。

当text()函数替换成main()函数后:

 func main () {                                                           //函数  
    fmt.Println("Hello World!")                                 //语句&表达式输出
 }

终端输出: img

函数:func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。

总结:一个go程序* 有了main() 函数,程序才能正常运行。*