Go 语言 程序每一个源文件都可以包含一个 init 函数,该 函数 会在 main 函数之前执行,被 Go 语言框架调用,也就是说 init 会在 main 函数之前被调用。
如果一个文件同时包含 全局变量定义 ,init 函数和 main 函数,那么最先执行的是全局变量的定义,接着是 init 函数,最后执行的时候 main 函数。
func init(){
// do something
}
init 函数可以有 返回值,也可以没有返回值。
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 函数
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 函数,该函数会在 main 函数之前执行,被 Go 语言框架调用,也就是说 init 会在 main 函数之前被调用。
如果一个文件同时包含全局变量定义 ,init 函数和 main 函数,那么最先执行的是全局变量的定义,接着是 init 函数,最后执行的时候 main 函数。