开启掘金成长之旅!这是我参与「掘金日新计划 · 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("幸福没有那么容易") //语句&表达式输出
}
终端提示编译报错,无法输出想要的结果:
将例子中的test包名替换成包名main后
终端输出:
结构解析:
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("幸福没有那么容易") //语句&表达式输出
}
终端显示:
显示重复声明编译报错。
当去掉一个main函数以后,函数正常输出。
终端输出:
结构解析:
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!") //语句&表达式输出
}
输出结果:
程序不能正常打印,且会在运行时报错。
当text()函数替换成main()函数后:
func main () { //函数
fmt.Println("Hello World!") //语句&表达式输出
}
终端输出:
函数:func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。
总结:一个go程序* 有了main() 函数,程序才能正常运行。*