逛Stackoverflow的时候,发现了一个很有趣的话题:

When is the init() function run?

init()函数是什么时候执行的,由此,引出了一个问题:Golang在导入包的时候,各个部分的执行顺序是什么。

答案:import --> const --> var --> init()

后面有大佬也给出了一张图,我觉得很经典:

测试代码:

package main

import (
    "fmt"
)

const c = 1

var v = func() int {
    if c == 1 {
        fmt.Println("const")
    }
    fmt.Println("var")
    return 1
}()

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

func main() {
    fmt.Println("main")
}
最后修改:2022 年 07 月 19 日
如果觉得我的文章对你有用,请随意赞赏