package internel
var M *int
func init() {
M = new(int)
a := 10
M = &a
}
main
package main
import (
"fmt"
"test/test1/internel"
)
var t *int = internel.M
//先赋值,再init
func init() {
fmt.Println(*t)
var b = 100
t = &b
}
func main() {
fmt.Println(t, ",", *t)
}
可以正常 运行
but
package util
var N int
func init() {
N = 5
}
testintg
package util
import (
"fmt"
"testing"
)
var u int = N
func Test_util(t *testing.T) {
fmt.Println(u)
}
这里的u打印出来是个0,为什么呢?
我忽略了 util 和Test_util 是属于一个包的,
在一个包中,init 和 全局变量的赋值顺序是
先全局变量,然后 再初始化init函数