Go语言init函数

Go语言init函数教程

Go 语言 程序每一个源文件都可以包含一个 init 函数,该 函数 会在 main 函数之前执行,被 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") }

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

44_golang init函数.png

我们定义了 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") }

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

45_golang init函数.png

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

Go语言init函数总结

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

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