go语言的main函数和init函数,go语言的执行顺序

main()函数和init()函数是go语言中非常重要的两个内置函数,而且go语言会自动调用这两个函数,就像c/c++语言的main()函数是一个主入口函数。


main()函数

任何go程序,没有package main便会引发“go run: cannot run non-main package”的错误,而main()函数只能应用于package main,而且package main要是没有main()函数,程序也无法执行,也就是说package main 必须包含main()函数。

go程序的初始化和执行都起始于package main,就像c/c++也必须要有一个mian主入口函数。

main()函数没有参数,也没有返回值。


init函数

这是go语言的另一个保留函数,可以简单地理解为与python的类中的初始化函数__init__()的功能有些类似,可以应用于每一个go文件,而且每个文件可以写任意个的init函数,不过最好不要这样,因为代码最好是容易维护的。

package main文件中的init函数会比main()函数先执行。


go程序的执行顺序

通常情况下,go程序不会只有package main文件(包),但go程序的初始化和执行都起始于这个文件(包),而且从import导入的包(文件)开始,先对这些包里import的包进行导入(执行),以此类推,如果出现同样的包,这只会导入一次。导入包之后,继续对包里的常量和变量进行初始化,如果有init函数,就接着执行init函数,待这些包加载完毕,才开始对main包里的常量和变量进行初始化,接着,如果main包里有init函数,就执行init函数,再执行main函数,否则直接执行main函数。



全栈后端 / go语法 :













Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.