问题根源: 存的是指针(地址)还是变量值,变量值变化 != 地址变化

  1. 给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的地址,故内容一样

  1. 遍历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得到的结果不是预期结果相关推荐

  1. golang数据结构初探之动态数组slice

    动态数组slice slice 又称动态数组,依托于数组实现,可以方便的进行扩容和传递,实际使用时比数组更灵活.但正是因为灵活,实际使用时更容易出错,避免出错的最好方法便是了解其实现原理. 特性速览 ...

  2. Array.prototype.slice.apply(arguments)和[].slice.apply(arguments)解析

    我们知道,函数内部 arguments 是一个类数组对象,不是真正的数组,因此也无法使用数组的各种方法.想详细了解 argument 对象可以前往函数中的 arguments. (function f ...

  3. golang 定义一个空切片_Golang slice切片操作之切片的追加、删除、插入等

    本文介绍了Golang slice切片操作之切片的追加.删除.插入等,分享给大家,具体如下: 一.一般操作 1,声明变量,go自动初始化为nil,长度:0,地址:0,nil func main(){ ...

  4. jQuery 遍历 - slice() 方法

    实例 选中所有段落,然后将所选内容缩减为只包含第一和第二个段落: .slice(0, 2) 亲自试一试 定义和用法 slice() 把匹配元素集合缩减为指定的指数范围的子集. 语法 .slice(se ...

  5. golang 初始化并赋值_golang 结构体初始化时赋值格式介绍

    golang在给结构体赋值初始值时,用:分割k,v值 x := ItemLog{ Id: GetUuid(), ItemId: u.Id, UsrId: "123", Name: ...

  6. python slice函数怎么取列表的最后一个数_python slice函数_python中slice函数如何实现?...

    我们在创建表格的时候,会做一下索引,这索引可以使表格内容更有逻辑,便于我们查找相关信息.在Python中,也有很多的索引工具.今天,小编就带大家认识一下Python中可以起到索引作用的实现切片对象sl ...

  7. python slice函数_python中slice函数如何实现?

    我们在创建表格的时候,会做一下索引,这索引可以使表格内容更有逻辑,便于我们查找相关信息.在Python中,也有很多的索引工具.今天,小编就带大家认识一下Python中可以起到索引作用的实现切片对象sl ...

  8. 微信小程序-使用对象格式数据进行遍历的坑(对象格式的赋值及遍历顺序)

    需求背景 项目需要做一个类似于及时聊天的留言板功能(其实除了不能实时刷新消息,其它也没差别了), 需要按照时间顺序,将最新的消息展示在最下面,下拉则加载更多历史消息 正文 因为前期未充分考虑到数据结构 ...

  9. map赋值+map遍历

    一.map赋值 二.map遍历

最新文章

  1. HDOJ 5373 The shortest problem 【数论】
  2. 区块链BaaS云服务(18)华为 BCS“跨链”
  3. ios设置tabbar背景颜色_WooCommerce微信小程序2.9.3版本发布 后台设置主题色 底栏装修定制...
  4. 检索数据_10_通过多条件组合返回数据
  5. mysql存储word文档_使用MySQL存储和检索word文档
  6. php行列,【后端开辟】php 怎样完成行列
  7. 他读博期间连发3篇Science,28岁任武大教授后再发Nature!
  8. jzoj6275-[NOIP提高组模拟1]小L的数列【矩阵乘法,欧拉定理】
  9. 2017西安交大ACM小学期 有趣异或[Trie树]
  10. 【37.68%】【hdu 5918】Sequence I
  11. http://ftp.gnu.org/gnu/ http://ftp.gnu.org/gnu/libc/
  12. 菜鸟裹裹宣布:让数十万快递小哥月入过万成为常态
  13. Python+tkinter打造类似于IDLE的代码编辑器(83行源码)
  14. 网页整个技术文档怎么拷贝_企业文档管理混乱?试试文档管理系统
  15. 官宣!阿里进军 5G,成立 XG 实验室发力新基建
  16. 从“鸡兔同笼”到问题的奇思妙解
  17. 如何关闭文件服务器的同步,文件服务器同步
  18. MySQL闪退以及服务中没有MySQL和MySQL 服务无法启动。系统出错。发生系统错误 1067。 进程意外终止。
  19. 2进制快速转换为16进制
  20. WinEdt的bib参考文献管理教程

热门文章

  1. 【Python】列表元素输入
  2. 蓝牙AOA定位网关上报数据格式
  3. 隐式 Style–CSS 在反爬虫中的应用
  4. P1914 小书童——凯撒密码(python实现)
  5. 微服务架构开发实战:如何集成Zuul和实现API网关?
  6. Android Binder(也许是最容易理解的)
  7. SDOI2014 Round1 day2
  8. 论文翻译[Deep Residual Learning for Image Recognition]
  9. ue5 小知识点 skeleton
  10. 翻译 | 《JavaScript Everywhere》第1章 开发环境(^_^)