美文网首页
go1.7 for--range遍历的那些小坑

go1.7 for--range遍历的那些小坑

作者: 秸秆混凝烧结工程师 | 来源:发表于2021-12-12 20:29 被阅读0次

package main

import "fmt"

// for ...range 遍历的的小坑
// 这里的想法就是给M赋值 预计输出
/*

0 ===> 0
1 ===> 1
2 ===> 2
3 ===> 3

但是实际输出的是
0 ===> 0
1 ===> 1
2 ===> 2
3 ===> 3

那么这是为什么?
原因在于每次拷贝的都是一个元素的副本,然后遍历的value都是对同一个同一个元素的遍历赋值,
如果直接对VALUE 取地址将会拿到同一个地址,对应的值就是最后遍历的元素值赋值给Value

可以看一下 for循环原码
/
"""
func main() {
slice := []int{0, 1, 2, 3}
m := make(map[int]
int)
// 方法一 : 可以保存一些前一个元素值
for key, val := range slice {
//val := val 局部val替代val
m[key] = &val
fmt.Println(m)
}

for key, _ := range slice {

    //方法2 : 直接索引获取原来的值
    m[key] = &slice[key]

}

for k, v := range m {
    fmt.Println(k, "===>", *v)
}

}
"""

/* 输出

0 ===> 3
1 ===> 3
2 ===> 3
3 ===> 3
*/

相关文章

  • go1.7 for--range遍历的那些小坑

    package main import "fmt" // for ...range 遍历的的小坑// 这里的想法就...

  • 集合遍历的坑

    遍历集合的时候,不能删除,否则很容易出现问题,这个大家都知道。但今天还是一不小心,犯错了,本质上对集合遍历的原理不...

  • 切片遍历的坑

    我们正常对于一个切片进行遍历不会有啥坑的,会出现有坑的点是,在遍历的过程中想对原切片数据进行修改,其中包括修改原切...

  • Python:For循环遍历列表list的坑

    前几天写了个小脚本,for循环遍历列表,但是在遍历期间对数组进行了删除元素的操作,给自己挖了坑For循环遍历时实际...

  • GO学习笔记Day1

    go version : go1.7 darwin/amd64 编辑器:LiteIDE (Mac OS X ) 我...

  • OC对于遍历的坑

    我们在使用 enumerateObject 或者 for in 等遍历方式对数组进行遍历时. 经常有需求是把其中某...

  • for in 循环遍历之坑

    问题描述:最近在做项目时,用for..in对元素进行遍历竟然多循环了一次,这让我百思不得其解,最后通过找资料,知道...

  • Golang context初探

    什么是context 从go1.7开始,golang.org/x/net/context包正式作为context包...

  • 浅谈 for与for in的不同点

    在javasctipt里遍历是必不可少的一项重要内容, 从刚入前端坑开始,就会学到遍历的方法,就是for循环,wh...

  • 总结CSS基础中的一些小坑

    CSS虽然很有趣,入门也容易,但对于前端菜鸟、初学者来说,还是有一些小坑是无法避免的,这些小坑相对而言更需要去积累...

网友评论

      本文标题:go1.7 for--range遍历的那些小坑

      本文链接:https://www.haomeiwen.com/subject/rrcdfrtx.html