golang range 遍历

原创 2017年10月06日 17:24:54

问题描述:

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

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
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++11 range for 遍历多维数组, 迭代变量添加引用 "&"的问题

问题背景        auto 是 C++ 11 扩展的新特性,用于自动类型推导。不过,如果你希望推导出的类型为引用(&),就要手动在变量名前加 '&';如果你还需要变量是常量的话,也要手动加入 '...
  • Ace_Yom
  • Ace_Yom
  • 2015年10月08日 09:29
  • 1362

multimap使用lower_bound、 upper_bound、 equal_range进行特定key的遍历

/**  * multimap 操作lower_bound、 upper_bound、 equal_range  */ #include #include #include ...

【GoLang笔记】遍历map时的key随机化问题及解决方法

之前的一篇笔记曾分析过,Go的map在底层是用hashmap实现的。由于高效的hash函数肯定不是对key做顺序散列的,所以,与其它语言实现的hashmap类似,在使用Go语言map过程中,key-v...
  • slvher
  • slvher
  • 2015年03月31日 14:40
  • 8106

【转】golang 文件操作 读写文件,上传文件,遍历文件,删除文件

1.建立与打开 建立文件函数: func Create(name string) (file *File, err Error) func NewFile(fd int, name string...
  • yxktc1
  • yxktc1
  • 2016年06月15日 16:43
  • 1383

Golang初级系列教程-控制结构-for-break-continue-range

Golang初级系列教程-控制结构-For/break/continue/rangefor 语句是 Go 中唯一的循环语句。语句中三部分中的任意一部分都可以没有内容,但是分号必须存在(除非三部分全部没...

golang slice index out of range错误

slice

Jsp实现页面forEach循环遍历多条数据的显示和后台对应数据的获取(strurs1)实现

使用jstl标签和form动态的页面数据显示操作获取! html代码: 用户信息表 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:golang range 遍历
举报原因:
原因补充:

(最多只允许输入30个字)