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

golang学习笔记之range

range遍历是复制range遍历数组是复制数组: a := []int{1,2,3,4,5} for _,x := range a{ x += 3 } f...
  • u010278923
  • u010278923
  • 2017年04月04日 10:35
  • 7228

golang range 遍历

在python,我们常用for i in x来遍历list/tuple,在go语言中,遍历数据或切片时可以用range,range会产生两个值,分别是数据的索引与值:package mainimpor...
  • iamlihongwei
  • iamlihongwei
  • 2017年12月19日 15:05
  • 44

go for range 遍历二维数组

var arry [2][3] int for index,_ := range arry { fmt.Print(index) } 运行结果: 0 1   没有遍历所有的6个元素。 二...
  • zyz770834013
  • zyz770834013
  • 2017年11月27日 14:55
  • 230

golang range 遍历

问题描述:遍历一个数组,修改其中的值:type MyTest struct { X int }arr := make([]MyTest,0,20) for k,v := range arr{ ...
  • qq_17612199
  • qq_17612199
  • 2017年10月06日 17:24
  • 154

go range

range 恒定最多返回 两个参数default type key, value := range map index, value := range slice...
  • minghu9
  • minghu9
  • 2016年12月31日 12:49
  • 362

golang遍历 struct 等结构体,使用 range 关键字

for k,v := range Xxx { }
  • suncaishen
  • suncaishen
  • 2013年04月15日 23:54
  • 8388

golang map 用原生range遍历不能保证顺序输出

按照之前我对map的理解,map中的数据应该是有序二叉树的存储顺序,正常的遍历也应该是有序的遍历和输出,但实际试了一下,却发现并非如此,网上查了下,发现从Go1开始,遍历的起始节点就是随机了,当然随机...
  • hificamera
  • hificamera
  • 2016年06月13日 11:13
  • 4829

Golang使用心得

13年上半年接触了Golang,对Golang十分喜爱。现在是2015年,离春节还有几天,从开始学习到现在的一年半时间里,前前后后也用Golang写了些代码,其中包括业余时间的,也有产品项目中的。一直...
  • yueguanyun
  • yueguanyun
  • 2016年08月06日 08:59
  • 452

Golang 部分标准库说明

go语言常用的标准库说明
  • ningyuanhuo
  • ningyuanhuo
  • 2017年02月09日 15:15
  • 975

golang 解读(2) sync.Map

sync.map就是1.9版本带的线程安全map. [[在Go 1.6之前, 内置的map类型是部分goroutine安全的,并发的读没有问题,并发的写可能有问题。自go 1.6之后, 并发地读写m...
  • lingzhiwangcn
  • lingzhiwangcn
  • 2017年12月08日 09:42
  • 346
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:golang range 遍历
举报原因:
原因补充:

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