美文网首页
go test 全局函数赋值小坑

go test 全局函数赋值小坑

作者: 不要重不要重 | 来源:发表于2019-09-25 09:47 被阅读0次
    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函数

    相关文章

      网友评论

          本文标题:go test 全局函数赋值小坑

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