go init()解析

每一个go文件都可以定义自己的init()函数来设置自己的状态,实际上一个go文件可以有多个init()方法,
这些init()方法按照定义的先后顺序依次执行。init()方法的调用在所有被导入的包中的变量被初始化之后再开始被调用,在main()方法之前。

下面用一段代码来进行说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main

import "fmt"

var Name = getName()

func getName() string {
return "jack"
}

func init() {
Name += "Nie"
}

func main() {
fmt.Println("Hello", Name)
}

运行以上程序,将会输出Hello Jack Nie
首先初始化Name变量,然后执行init()函数,最后执行main()函数。

参考文献