【Golang系列】-init函数

2022-03-16

init函数

特殊的函数init,先于main函数执行,实现包级别的一些初始化操作

init函数的主要特点

  • init函数先于main函数自动执行,不能被其他函数调用
  • init函数没有输入参数和返回值
  • 每个包可以有多个init函数
  • 包的源文件也可以有多个init函数,这点比较特殊
  • 同一个包的init执行顺序,没有明确定义,编程时需要注意程序不要依赖这个执行顺序
  • 不同的包的init函数按照包导入的依赖关系决定执行的顺序

初始化顺序

初始化顺序:变量初始化->init()->main()

示例:


package main

import "fmt"

var a int = initVar()

func init() {
    fmt.Println("init2")
}

func init() {
    fmt.Println("init1")
}

func initVar() {
    fmt.Println("init var...")
    return 100
}

func main() {
    fmt.Println("main...")
}