先看代码:

package main

import "fmt"

func main() {
type s struct {
A string
B int32
}
arr := []s{
{"123", 123},
{"456", 456},
{"789", 789},
}
m := make(map[string]*s)
for idx, item := range arr {
m[item.A] = &item
fmt.Printf("idx=%d, addr=%p, item addr=%p\n", idx, &arr[idx], &item)
}
for k, v := range m {
fmt.Printf("key=%s, v=%+v\n", k, v)
}
}

运行输出:

idx=0, addr=0xc00004e050, item addr=0xc0000044a0
idx=1, addr=0xc00004e068, item addr=0xc0000044a0
idx=2, addr=0xc00004e080, item addr=0xc0000044a0
key=123, v=&{A:789 B:789}
key=456, v=&{A:789 B:789}
key=789, v=&{A:789 B:789}

我傻傻的在循环中取item的地址,结果所有map中的值都指向最后一个!

看来item是一个独立对象,这个对象指向了数组中的对应元素。

是时候静下来认真读《go专家编程》了!

最新文章

  1. 在DevExpress程序中使用内置的图标构建美观的界面元素
  2. Android之Linearlayouy线性布局
  3. Office密码破解工具最好用的是哪款
  4. Azure 数据库中文乱码的问题
  5. import_site
  6. HDU 2609 最小表示法
  7. Centos 安装 Java
  8. MVC中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别
  9. 编译时:virtual memory exhausted: Cannot allocate memory
  10. C# 字符串的截取和替换
  11. startActivityForResult用法详解
  12. mysql数据库创建database(实例),和用户,并授权
  13. angular 服务
  14. 打开U盘后文件都不见了的解决方法
  15. Android中界面实现全屏显示的两种方式
  16. hadoop 2.0--YARN
  17. 深入浅出Node.js (3) - 异步I/O
  18. LVS+Keepalived实现mysql的负载均衡
  19. jquery中 after append appendTo 的区别
  20. Freemarker 页面静态化技术使用入门案例

热门文章

  1. Sentry 开发者贡献指南 - SDK 开发(性能监控)
  2. tomcat startup.bat 启动中文显示乱码
  3. JAVA上传文件到FTP上
  4. 【LeetCode】962. Maximum Width Ramp 解题报告(Python)
  5. 1025 - The Specials Menu
  6. 1054 - Efficient Pseudo Code
  7. Certified Adversarial Robustness via Randomized Smoothing
  8. vue使用v-chart图表出现的问题
  9. 【jvm】02-手写自己的类加载器
  10. 编写Java程序,实现客户端向服务端上传文件的功能