目录

文章目录

  • 目录
  • 正文

正文

golang中的range是一个很常用的功能,可以遍历一个数组,切片等等,但是使用过程需要注意一个细节。
先举个栗子:

package mainimport ("fmt"
)type Foo struct {Bar string
}func main() {list := []Foo{Foo{"bar1"}, Foo{"bar2"}, Foo{"bar3"}}for i, v := range list {v.Bar = "change" + string(i)}fmt.Println(list)
}

我们期望的结果是

[{change1} {change2} {change3}]

但是实际输出的结果是

[{bar1} {bar2} {bar3}]

为什么没有改变? 其实 for range 中的 v 是一个数组元素值的拷贝, 而不是数组元素本身。所以,修改数组元素需要使用下标进行修改。栗子中 for range 修改成

for i, _ := range list {list[i].Bar = "change" + string(i)
}

小考题:

package mainimport ("fmt"
)func main() {a := []int{1, 2, 3}for _, v := range a {fmt.Println(&v)}
}

上面代码每次输出是否是一样?
答案:是一样的。
解析:for range 中的 v 这个副本只会初始化一次。
好比

var v int
v=a
v=b
v=c
v的地址始终不变

Golang range解析相关推荐

  1. Golang配置文件解析-oozgconf

    代码地址如下: http://www.demodashi.com/demo/14411.html 简介 oozgconf基于Golang开发,用于项目中配置文件的读取以及加载,是一个轻量级的配置文件工 ...

  2. golang XML解析

    使用微信支付的时候遇到这样一种情况:支付成功之后微信会发送一个通知过来,这个通知包含xml格式的数据,其中有一个字段是这样的: coupon_id_n,代金券或立减优惠ID,n ,代金券或立减优惠ID ...

  3. golang 网页解析 goquer包 简介

    目录 安装 加载页面 获得document对象 选择元素 Selection类型提供的方法 goquery github地址 https://github.com/PuerkitoBio/goquer ...

  4. golang 生成 解析 json

    一.json 简介 在介绍这部分之前先简要介绍一下Json语法 JSON 语法是 JavaScript 语法的子集.JSON 语法是 JavaScript 对象表示法语法的子集. 数据在名称/值对中 ...

  5. golang range 遍历读写数据问题

    在Golang中使用 for range 语句进行迭代非常的便捷,但在涉及到指针时就得小心一点了. 下面的代码中定义了一个元素类型为 *int 的通道 ch : package mainimport ...

  6. json解析对应的value为null_解决golang json解析出现值为空的问题

    我是通过beego框架,将请求过来的json进行解析,并将值保存在结构体中 --------------------1--------------------- request := UpdateCo ...

  7. Golang json 解析与生成

    文章目录 1.解析 json 1.1 map[string]interface{} 存储 json 1.2 struct 存储 json 1.3 []map[string]interface{} 解析 ...

  8. golang json解析

    前言 Go 语言自带的 encode/json 包提供了对 JSON 数据格式的编码和解码能力. 解析 JSON 的关键,其实在于如何声明存放解析后数据的变量的类型. 此外使用 json 编码还会有几 ...

  9. RSS Can:使用 Golang Rod 解析浏览器中动态渲染的内容:(四)

    第四篇文章,来聊聊 Golang 生态中如何"遥控"浏览器,更简单.可靠的使用基于 CDP (Chrome DevTools Protocol)协议的浏览器作为容器,获取诸如微博. ...

最新文章

  1. IOS报错:Unexpected ‘@’ in program
  2. mapinfo制作地图_用QGIS代替Mapinfo软件
  3. 进阶丨如何让你的数据分析更加简洁专业
  4. java语言中的数据是如何定义_java中的数据类型
  5. linux查看网卡连接哪个cpu,Linux查看CPU/内存/网卡/操作系统信息
  6. 详解Oracle DELETE和TRUNCATE 的区别
  7. linux sha1sum命令,讲解Linux中校验文件的MD5码与SHA1码的命令使用
  8. php实现服务器文件同步,PHPstorm配置同步服务器文件
  9. 我晕,原来是这个问题!
  10. mysql大表修改字段_mysql 如何给大表添加字段
  11. “科目四”竟是民间杜撰出来的?
  12. sqlserver之远程访问配置
  13. Java String 真的是不可变的吗
  14. Revit:一般建筑的主要结构汇总和构建参数化族方法
  15. 毛玻璃效果(CSS)实现
  16. 向量的2-范数、矩阵的2-范数
  17. FF新推荐弹窗怎么彻底让他爬
  18. 微信支付,小程序支付V3
  19. si,di,ds,es寄存器
  20. 深度学习 06_2 车辆统计项目代码

热门文章

  1. available scholarships Cambridge
  2. 第一年的报告 工程系的研究生
  3. IEEE R10 2021 Special Call For Proposals Related To CoViD‘19
  4. 邀您共赴数据库学术顶会ICDE 2019——阿里云专场 零距离接触达摩院数据库“最强大脑”...
  5. Linux 上扩展swap分区
  6. javaWeb中的Model1和Model2
  7. Mediawiki随笔
  8. 使用用户自定义类型作为map的key
  9. APK文件的解包打包和修改
  10. sql查询复习笔记-小技巧,大智慧(续一)