加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang range 遍历

发布时间:2020-12-16 18:04:15 所属栏目:大数据 来源:网络整理
导读:问题描述: 遍历一个数组,修改其中的值: 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始

问题描述:

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

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 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读