东莞网站制作企业网站,阿里巴巴国际站运营,wordpress 5.2 5.3,商城网站建设效果入口函数与包初始化:搞清 Go 程序的执行次序
main.main 函数:Go 应用的入口函数
Go 语言中有一个特殊的函数:main 包中的 main 函数,也就是 main.main,它是所有 Go 可执行程序的用户层执行逻辑的入口函数。 Go 程序在…
入口函数与包初始化:搞清 Go 程序的执行次序
main.main 函数:Go 应用的入口函数
Go 语言中有一个特殊的函数:main 包中的 main 函数,也就是 main.main,它是所有 Go 可执行程序的用户层执行逻辑的入口函数。
Go 程序在用户层面的执行逻辑,会在这个函数内按照它的调用顺序展开。
main 函数的函数原型非常简单,没有参数也没有返回值。
Go 语言要求:可执行程序的 main 包必须定义 main 函数,否则 Go 编译器会报错。在启动了多个 Goroutine 的 Go 应用中,main.main 函数将在 Go 应用的主 Goroutine 中执行。
不过对于 main 包的 main 函数来说,还需要明确一点,就是它虽然是用户层逻辑的入口函数,但它却不一定是用户层第一个被执行的函数。
init 函数:Go 包的初始化函数
Go 语言还有一个特殊函数,它就是用于进行包初始化的 init 函数了。和 main.main 函数一样,init 函数也是一个无参数无返回值的函数。
如果 main 包依赖的包中定义了 init 函数,或者是 main 包自身定义了 init 函数,那么 Go 程序在这个包初始化的时候,就会自动调用它的 init 函数,因此这些 init 函数的执行就都会发生在 main 函数之前。
在初始化 Go 包时,Go 会按照一定的次序,逐一、顺序地调用这个包的 init 函数。
一般来说,先传递给 Go 编译器的源文件中的 init 函数,会先被执行;而同一个源文件中的多个 init 函数,会按声明顺序依次执行。