Go语言关于range和map的使用

Astro门 2016-08-05 05:38:53
帮忙解释一下下面的例子,尤其是这行代码,不明白意思。
for k := range m

谢谢!

...全文
1260 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
悲催的码农 2016-08-17
  • 打赏
  • 举报
回复
首先要清楚range的作用,他是循环遍历 1、在第一次执行for k:= range m的时候他的遍历次数就已经决定好了,是m的长度也就是10,后面的循环只是判断次数是否<10 2、range在遍历的时候是随机获取m里面的内容,如果你想按顺序遍历,那么很抱歉,这个做不到,除非你自己用下标来指定 那么这段代码就是随机10次获取m里面的内容,把下标X2的内容更新掉,再删掉原来下标的内容 其中k是只map里面的key也就是[int]string里面的int值,加入某次循环获取到的k=9,那他会在map里面增加一个m[18]="x",在删掉m[9],每次k=range m的时候都是重新去m里面获取,而不是在最开始定义的m(因为你的m每次都会更新),这样就解释了为什么你打印出来会有m[16] m[28],其实你可以在循环里面把每次的k和m都打印出来,相信这样会更加深理解
Dong 2016-08-11
  • 打赏
  • 举报
回复
rang=range笔记本打字,不好打
Dong 2016-08-11
  • 打赏
  • 举报
回复
rang是关键字,迭代器获取内容,循环获取m(map)的key内容,并赋值给k

2,190

社区成员

发帖
与我相关
我的任务
社区描述
go语言学习与交流版
社区管理员
  • go语言社区
  • Freeman Z
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧