golang range 遍历

前端之家收集整理的这篇文章主要介绍了golang range 遍历前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

问题描述:

遍历一个数组,修改其中的值:

type MyTest struct {
    X int
}

arr := make([]MyTest,0,20)
for k,v := range arr{
    v.X = Y
}

期待输出,数组中所有的X均被修改成Y
实际输出,数组中所有的X均未发生改变

问题分析

在Go的for…range循环中,Go始终使用值拷贝的方式代替被遍历的元素本身,简单来说,就是for…range中那个value,是一个重复使用的值拷贝,而不是元素本身。不能通过&进行修改某个属性

解决方

for i,v := range arr{ arr[i].X = Y }

猜你在找的Go相关文章