[golang]给slice赋值或者遍历slice得到的结果不是预期结果
问题根源: 存的是指针(地址)还是变量值,变量值变化 != 地址变化
- 给slice赋值结果不预期示例:
var array []int // slice不初始化,需要结合append使用;直接使用会panicvar pointerArray []*intfor i := 0; i < 3; i++ {array = append(array, i)}for _, v := range array {pointerArray = append(pointerArray, &v)}for index, v := range pointerArray {// fmt.Printf("观察v的地址:%v \n", &v)fmt.Printf("index:%d,value:%d \n", index, *v)}// 输出//index:0,value:2 //index:1,value:2 //index:2,value:2
使用range遍历array切片,为pointerArray赋值时,临时变量v的地址不变,而pointerArray每次append的是v的地址,故内容一样
- 遍历slice结果不预期示例:
var pointerArray []*int// slice不初始化,需要结合append使用;直接使用会panic
for i := 0; i < 3; i++ {// fmt.Printf("观察i的地址:%v \n", &i)pointerArray = append(pointerArray, &i)
}
for index, v := range pointerArray {fmt.Printf("index:%d,value:%d \n", index, *v)
}
// 输出
//index:0,value:3
//index:1,value:3
//index:2,value:3
pointerArray存的是临时变量i的地址,而i的地址不变,所以遍历pointerArray取到的值都是同个地址的内容
题外:注意分析为何两个示例输出的value不一样(一个为2,一个为3)
[golang]给slice赋值或者遍历slice得到的结果不是预期结果相关推荐
- golang数据结构初探之动态数组slice
动态数组slice slice 又称动态数组,依托于数组实现,可以方便的进行扩容和传递,实际使用时比数组更灵活.但正是因为灵活,实际使用时更容易出错,避免出错的最好方法便是了解其实现原理. 特性速览 ...
- Array.prototype.slice.apply(arguments)和[].slice.apply(arguments)解析
我们知道,函数内部 arguments 是一个类数组对象,不是真正的数组,因此也无法使用数组的各种方法.想详细了解 argument 对象可以前往函数中的 arguments. (function f ...
- golang 定义一个空切片_Golang slice切片操作之切片的追加、删除、插入等
本文介绍了Golang slice切片操作之切片的追加.删除.插入等,分享给大家,具体如下: 一.一般操作 1,声明变量,go自动初始化为nil,长度:0,地址:0,nil func main(){ ...
- jQuery 遍历 - slice() 方法
实例 选中所有段落,然后将所选内容缩减为只包含第一和第二个段落: .slice(0, 2) 亲自试一试 定义和用法 slice() 把匹配元素集合缩减为指定的指数范围的子集. 语法 .slice(se ...
- golang 初始化并赋值_golang 结构体初始化时赋值格式介绍
golang在给结构体赋值初始值时,用:分割k,v值 x := ItemLog{ Id: GetUuid(), ItemId: u.Id, UsrId: "123", Name: ...
- python slice函数怎么取列表的最后一个数_python slice函数_python中slice函数如何实现?...
我们在创建表格的时候,会做一下索引,这索引可以使表格内容更有逻辑,便于我们查找相关信息.在Python中,也有很多的索引工具.今天,小编就带大家认识一下Python中可以起到索引作用的实现切片对象sl ...
- python slice函数_python中slice函数如何实现?
我们在创建表格的时候,会做一下索引,这索引可以使表格内容更有逻辑,便于我们查找相关信息.在Python中,也有很多的索引工具.今天,小编就带大家认识一下Python中可以起到索引作用的实现切片对象sl ...
- 微信小程序-使用对象格式数据进行遍历的坑(对象格式的赋值及遍历顺序)
需求背景 项目需要做一个类似于及时聊天的留言板功能(其实除了不能实时刷新消息,其它也没差别了), 需要按照时间顺序,将最新的消息展示在最下面,下拉则加载更多历史消息 正文 因为前期未充分考虑到数据结构 ...
- map赋值+map遍历
一.map赋值 二.map遍历
最新文章
- HDOJ 5373 The shortest problem 【数论】
- 区块链BaaS云服务(18)华为 BCS“跨链”
- ios设置tabbar背景颜色_WooCommerce微信小程序2.9.3版本发布 后台设置主题色 底栏装修定制...
- 检索数据_10_通过多条件组合返回数据
- mysql存储word文档_使用MySQL存储和检索word文档
- php行列,【后端开辟】php 怎样完成行列
- 他读博期间连发3篇Science,28岁任武大教授后再发Nature!
- jzoj6275-[NOIP提高组模拟1]小L的数列【矩阵乘法,欧拉定理】
- 2017西安交大ACM小学期 有趣异或[Trie树]
- 【37.68%】【hdu 5918】Sequence I
- http://ftp.gnu.org/gnu/ http://ftp.gnu.org/gnu/libc/
- 菜鸟裹裹宣布:让数十万快递小哥月入过万成为常态
- Python+tkinter打造类似于IDLE的代码编辑器(83行源码)
- 网页整个技术文档怎么拷贝_企业文档管理混乱?试试文档管理系统
- 官宣!阿里进军 5G,成立 XG 实验室发力新基建
- 从“鸡兔同笼”到问题的奇思妙解
- 如何关闭文件服务器的同步,文件服务器同步
- MySQL闪退以及服务中没有MySQL和MySQL 服务无法启动。系统出错。发生系统错误 1067。 进程意外终止。
- 2进制快速转换为16进制
- WinEdt的bib参考文献管理教程