当前位置: 首页 > news >正文

Go指针取址问题:循环后每次都拿到相同内容

例子:

func main() {yourList := [...]int{1, 2, 3}yourMap1 := make(map[int]*int)yourMap2 := make(map[int]*int)for key, value := range yourList {// 修改前yourMap1[key] = &value// 修改后tmp := valueyourMap2[key] = &tmpfmt.Println(value, &value, tmp, &tmp)}fmt.Println(yourMap1)fmt.Println(yourMap2)
}

//1 0xc000020090 1 0xc000020098
//2 0xc000020090 2 0xc0000200a8
//3 0xc000020090 3 0xc0000200c0
//map[0:0xc000020090 1:0xc000020090 2:0xc000020090]
//map[0:0xc000020098 1:0xc0000200a8 2:0xc0000200c0]

前者地址一直没变,但后者地址会变,因为我们把值拷贝一份之后又重新取址。

注意:

  1. 每次都要赋值新变量即:=

  2. 如果改成这样是没用的 tmp := &value;yourMap2[key] = tmp;也就是把地址给新变量,还是会把一样的地址赋予到map里面

http://www.lryc.cn/news/108615.html

相关文章:

  • 用Rust实现23种设计模式之简单工厂
  • SpringBoot + minio实现分片上传、秒传、续传
  • logback 里面设置 自动删除3天之前的日志
  • 对于数据库查询索引和查字典索引的理解
  • git删除已经提交的大文件
  • 【数据分析】pandas 一
  • 题解 | #G.Gcd# 2023牛客暑期多校6
  • 苍穹外卖day10——订单状态定时处理(Spring Task)、来单提醒和客户催单(WebSocket)
  • 【多线程初阶】多线程案例之单例模式
  • 跨境选品怎么选?建议独立站卖家收下这份利基产品查找攻略!
  • [C++项目] Boost文档 站内搜索引擎(1): 项目背景介绍、相关技术栈、相关概念介绍...
  • opencv-32 图像平滑处理-高斯滤波cv2.GaussianBlur()
  • Windows 环境Kubernetes安装
  • 自建类ChatGPT服务:本地化部署与远程访问教程
  • 常用SQL语句总结
  • arm交叉编译lmbench
  • ExtJs 7.7.0 下载方法与去除trial水印
  • Android11开发规划
  • 活动隔断在现在酒店运用的方式
  • Jenkins工具系列 —— 插件 钉钉发送消息
  • LeetCode 26 题:删除有序数组的重复项
  • 优雅地切换node版本(windows)
  • 反诈:吴明军、黄亮领导的WIN生活资金盘,大家警惕防范此类诈骗
  • shell、bash的关系及bash的特性(一)
  • 【问题随记】
  • Stable Diffusion AI绘画学习指南【常用模型,采样器介绍】
  • pycharm——漏斗图
  • RISC-V基础之浮点指令(包含实例)
  • 前端生成图片验证码怎么做?
  • 【Java】springboot框架 粮油质量溯源MES生产加工管理系统源码