美文网首页
[golang] for ... range指针的坑

[golang] for ... range指针的坑

作者: liuzoxan | 来源:发表于2019-08-09 19:40 被阅读0次

话不多说,看代码知道输出结果么?

import (
    "github.com/spotmaxtech/gokit"
    "testing"
)

func TestRangeFault(t *testing.T) {
    l1 := []int{1,2,3,4,5}
    var l2 []*int
    for _, i := range l1 {
        l2 = append(l2, &i)
    }

    t.Log(gokit.Prettify(l2))
}

输出结果

=== RUN   TestRangeFault
--- PASS: TestRangeFault (0.00s)
    lesson18-_test.go:67: [
          5,
          5,
          5,
          5,
          5
        ]
PASS

Process finished with exit code 0

for range每次循环使用的是同一个临时变量!每次都是做了一次值拷贝而已,引用它的指针是有问题的!

相关文章

网友评论

      本文标题:[golang] for ... range指针的坑

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