包下有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
:
执行go run f2.go f1.go
:
为什么run的文件先后顺序不一样,结果就不一样了呢?
go 在规范中的 包初始化(Package initialization) 章节中明确指出:
网友评论