go init函数


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

init函数的主要特点

  • init函数先于main函数自动执行,不能被其他函数调用;

  • init函数没有输入参数、返回值;(加上之后就不是自动执行的 init 了)

  • 每个包可以有多个init函数,包的每个源文件也可以有多个init函数,这点比较特殊

    package main
    
    import "fmt"
    
    func init() {
    	fmt.Println(1)
    }
    func init() {
    	fmt.Println(2)
    }
    func main() {
    
    }
    

    多个 init 函数就按顺序执行

  • 同一个包的init执行顺序,golang没有明确定义,编程时要注意程序不要依赖这个执行顺序。

  • 不同包的init函数按照包导入的依赖关系决定执行顺序。
    下面以一个例子来讲解

    import (
    	"fmt"
    	"log"
    	"os"
    )

    执行顺序是

    1. os.init()
    2. log.init()
    3. fmt.init()
    4. main()

    就是逆序执行的


如果本文帮助到了你,帮我点个广告可以咩(o′┏▽┓`o)


文章作者: Anubis
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Anubis !
评论
  目录