在每一个Go源文件中,都可以定义任意个如下格式的特殊函数:

func init(){
  // ...
}

这种特殊的函数不接收任何参数也没有任何返回值,我们也不能在代码中主动调用它。当程序启动的时候,init函数会按照它们声明的顺序自动执行。

initinitinitmain
init
package main

import "fmt"

var x int8 = 10

const pi = 3.14

func init() {
  fmt.Println("x:", x)
	fmt.Println("pi:", pi)
	sayHi()
}

func sayHi() {
	fmt.Println("Hello World!")
}

func main() {
	fmt.Println("你好,世界!")
}

输出结果:

x: 10
pi: 3.14
Hello World!
你好,世界!