美文网首页
go 中全局变量的初始化顺序

go 中全局变量的初始化顺序

作者: wayyyy | 来源:发表于2023-02-17 23:50 被阅读0次

    包下有2个文件f1.go 和 f2.go 两个文件。
    f1.go:

    package main
    
    var A int = 3
    var B int = A + 1
    var C int = A
    

    f2.go:

    package main
    
    import "fmt"
    
    var D = f()
    
    func f() int {
        A = 1
        return 1
    }
    
    func main() {
        fmt.Println(fmt.Sprintf("A = %d, B = %d, C = %d, D = %d", A, B, C, D))
    }
    

    执行go run f1.go f2.go

    image.png

    执行go run f2.go f1.go

    image.png

    为什么run的文件先后顺序不一样,结果就不一样了呢?
    go 在规范中的 包初始化(Package initialization) 章节中明确指出:

    相关文章

      网友评论

          本文标题:go 中全局变量的初始化顺序

          本文链接:https://www.haomeiwen.com/subject/qfsjqdtx.html