Go语言init函数教程

Go 语言 程序每一个源文件都可以包含一个 init 函数,该 会在 函数之前执行,被 Go 语言框架调用,也就是说 init 会在 main 函数之前被调用。

如果一个文件同时包含 ,init 函数和 main 函数,那么最先执行的是全局变量的定义,接着是 init 函数,最后执行的时候 main 函数。

Go语言init函数

语法

func init(){ // do something }

说明

init 函数可以有 ,也可以没有返回值。

案例

init函数在main函数之前调用

Go 语言的 init 函数在 main 函数之前调用

package main import ( "fmt" ) func init(){ fmt.Println("Call init") } func main() { fmt.Println("嗨客网(www.haicoder.net)") //Go语言的 init 函数在 main 函数之前调用 fmt.Println("In main") }

程序运行后,控制台输出如下:

我们定义了 init 函数,该函数是框架自己负责调用,因此不需要我们在 main 函数手动调用,而且该函数在 main 函数之前被调用。

全局变量定义和init函数和main函数

最先执行的是全局变量的定义,接着是 init 函数,最后执行的时候 main 函数

package main import ( "fmt" ) func cfgFileName()string{ fmt.Println("Call Global Var init") return "cfg.ini" } var CfgFile = cfgFileName() func init(){ fmt.Println("Call init") } func main() { fmt.Println("嗨客网(www.haicoder.net)") //最先执行的是全局变量的定义,接着是 init 函数,最后执行的时候 main 函数。 fmt.Println("In main") }

程序运行后,控制台输出如下:

我们看到,首先被调用的是全局变量的定义,接着是 init 函数,最后执行的时候 main 函数。

Go语言init函数总结

Go 语言程序每一个源文件都可以包含一个 init 函数,该函数会在 main 函数之前执行,被 Go 语言框架调用,也就是说 init 会在 main 函数之前被调用。

如果一个文件同时包含全局变量定义 ,init 函数和 main 函数,那么最先执行的是全局变量的定义,接着是 init 函数,最后执行的时候 main 函数。