董雷 的个人博客 / 1 / 6 / 创建于 2年前
原因是 for range 循环 只有第一次的时候 是 := ,从第二次循环开始都是 = (对之前的变量进行赋值而不是重新初始化所以都是对应的同一个指针) ;所以不管循环多少次 指针地址都是一样的;
本作品采用《CC 协议》,转载必须注明作者和本文链接
这样可以减少内存分配, 可以 append tmp 或者 使用 for + 索引取值的方式
@learner
func main(){ arrs := []int{1,2,3,4} var finalArrs []*int for i := 0; i < len(arrs); i++ { finalArrs = append(finalArrs, &arrs[i]) } for _, value := range finalArrs { fmt.Println(*value) } }
key 与 value 在 for 作用域里面只会声名一次,生命周期内共享地址不变会
github.com/golang/go/discussions/5..., 这里有一个bug。可以参考下。
我要举报该,理由是:
这样可以减少内存分配, 可以 append tmp 或者 使用 for + 索引取值的方式
key 与 value 在 for 作用域里面只会声名一次,生命周期内共享地址不变会
github.com/golang/go/discussions/5..., 这里有一个bug。可以参考下。