今天来了解一下Go语言中的init函数
Go语言中有两个保留的函数:main函数和init函数
init函数的特性如下:
init函数没有参数和返回值;
init函数不能被其他函数调用,只能被Go程序自动调用;
一个package中可以包含多个init函数;
一个go文件中可以包含多个init函数;
最好一个go文件中只写一个init函数;
init函数与main函数的区别:
init可以应用于任意包中,且可以重复定义多个;
main函数只能用于main包中,且只能定义一个。
init函数和main函数的执行顺序,导包的顺序,常量、变量的初始化顺序:
程序的初始化和执行都起始于main包。如果main包还导入了其它的包,那么就会在编译时将它们依次导入。有时一个包会被多个包同时导入,那么它只会被导入一次(例如很多包可能都会用到fmt包,但它只会被导入一次,因为没有必要导入多次)。当一个包被导入时,如果该包还导入了其它的包,那么会先将其它包导入进来,然后再对这些包中的包级常量和变量进行初始化,接着执行init函数(如果有的话),依此类推。等所有被导入的包都加载完毕了,就会开始对main包中的包级常量和变量进行初始化,然后执行main包中的init函数(如果存在的话&