話不多說(shuō),看代碼知道輸出結(jié)果么?
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))
}
輸出結(jié)果
=== RUN TestRangeFault
--- PASS: TestRangeFault (0.00s)
lesson18-_test.go:67: [
5,
5,
5,
5,
5
]
PASS
Process finished with exit code 0
for range每次循環(huán)使用的是同一個(gè)臨時(shí)變量!每次都是做了一次值拷貝而已,引用它的指針是有問(wèn)題的!