美文网首页
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) 章节中明确指出:

相关文章

  • 2020-05-19

    go 文件代码初始化顺序

  • GO ---1(hello world)

    go中,初始化的顺序,package ->const->var ->init()->main() 为了使用导入的包...

  • c程序运行时内存空间分配

    bss:全局变量,未初始化,或初始化为0 data:全局变量,已初始化 rodata(read only):程序中...

  • IOS 设置全局变量

    在iOS开发过程中关于全局变量的几个方法 1.在APPDelegate中声明并初始化全局变量.AppDelegat...

  • 调整驱动加载顺序

    Linux内核驱动程序初始化顺序的调整(1) 如何调整Linux内核启动中的驱动初始化顺序

  • iOS 全局变量设置

    在APPDelegate中声明并初始化全局变量. viewController获取该值的时候

  • Web前端学习基础之JavaScript命名空间

    在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量不是按照想像中的顺序来。避免全局变量名冲突的...

  • 局部变量和全局变量

    什么是局部变量? 在Go语言和C语言中写在{}中或者函数中或者函数的形参, 就是局部变量 什么是全局变量? 在Go...

  • 内存管理

    一、内存布局 bss:未初始化的全局变量或者静态变量 data:已初始化的全局变量或者静态变量 text:保存代码...

  • 初始化

    成员方法的初始化 在类的内部,变量的定义顺序决定了初始化的顺序。创建一个对象时,会先初始化对象中的成员变量,然后才...

网友评论

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

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