init() 函数是 Go 程序初始化的一部分。Go 程序初始化先于 main 函数,由 runtime 初始化每个导入的包,初始化顺序不是按照从上到下的导入顺序,而是按照解析的依赖关系,没有依赖的包最先初始化。

每个包首先初始化包作用域的常量和变量(常量优先于变量),然后执行包的 init() 函数。同一个包,甚至是同一个源文件可以有多个 init() 函数。init() 函数没有入参和返回值,不能被其他函数调用,同一个包内多个 init() 函数的执行顺序不作保证。

一句话总结: import –> const –> var –> init() –> main()

示例:

package main

import "fmt"

func init()  {
    fmt.Println("init1:", a)
}

func init()  {
    fmt.Println("init2:", a)
}

var a = 10
const b = 100

func main() {
    fmt.Println("main:", a)
}
// 执行结果
// init1: 10
// init2: 10
// main: 10


关于收费
微薄收入,仅用于维持服务器。本站模型区全部免费
关于VIP
VIP可以免费下载。月度、年度vip每天可免费下载9次,应该够用。终身vip每天可下载19次,右侧成为vip
注意,请不要重复点击某个资源的下载按钮,每次点击都会计入次数
资源失效处理
1、如果是蓝奏云,将下载链接中的lanzous换成lanzoux即可
2、如果是百度云失效了,那请点右侧发邮件给客服,或者在评论区指出,也可在菜单栏【有问必答】说明
3、如果是其他原因,请右侧按钮发邮件给我

发表评论