首页 > 其他分享 >golang for range

golang for range

时间:2022-08-29 09:13:27浏览次数:66  
标签:arr 变量 int golang range 拷贝

    m := make(map[int]*int)
    arr := []int{1, 2, 3, 4, 5}
    for i, v := range arr {
        m[i] = &v
    }
    for k, v := range m {
        fmt.Println("k-->v", k, *v)
    }

输出什么呢?

for range 每次都是拷贝原变量的副本,也就是值拷贝。

在上述题目过程中,我们拷贝的并不是arr[i]对应的地址,而是变量v的地址。你可能说变量v不就是arr[i]嘛,答案是并不是,v只不过是一个临时变量罢了。上面的代码其实等价于:

m := make(map[int]*int)
    arr := []int{1, 2, 3, 4, 5}
    for i, v := range arr {//    v 临时变量,负责值拷贝
        v = arr[i] //    最后存入的是v的地址,v每次循环过程中值都在改变,所以最后结果是5
        m[i] = &v
    }
    for k, v := range m {
        fmt.Println("k-->v", k, *v)
    }

  所以最终输出:*v的值都是5。

 

标签:arr,变量,int,golang,range,拷贝
From: https://www.cnblogs.com/lqq2314/p/16634741.html

相关文章

  • Arrange the Bulls(状压dp)
    ArrangetheBulls(状压dp)题目大意:一些牛喜欢一些地方(每头牛都有一些喜欢的地方),现在要把这些地方分配给牛,每头牛都应该分到一个地方,问有多少种分配的方法此题拥有着状压d......
  • golang json使用10、-10、0表示,true、false、null
    packagemainimport("encoding/json""errors""fmt")typeAstruct{BrBoolean`json:"br"`}funcmain(){varcAe:=json.Unm......
  • firstgolang
    packagemain//程序的包名/*import"fmt"import"time"*/import("fmt""time")//main函数funcmain(){//函数的{一定是和函数名在同一行的,否则编......
  • 计算四则表达式值 Golang
    思路:先转逆波兰,再求值packagemainimport( "fmt" "strconv" "strings")funcmid2fix(sstring)[]string{ res:=[]string{} exp:=strings.Fields(s) ss......
  • [Golang] cgo 调用 .so 捕获异常问题
    最近需要在go中去调用.so库去完成一些事情,go方面,利用cgo可以顺利的调用.so中的方法,但是有个问题是go没法捕获.so那边出现的异常。如果.so那边异常了,那么会......
  • Golang入门基础1
    Golang入门基本的项目结构go的环境搭建比较简单就直接跳过了工程结构如下每一个go程序都需要依赖一个包现在写一个简单的程序packagemainimport"fmt"funcmain(......
  • golang html转pdf
    url:=""res,err:=http.Get(url)iferr!=nil{fmt.Fprintf(os.Stderr,"fetch:%v",err)os.Exit(1)}//读取资源数据body:[]bytebody,err:=iou......
  • golang 给当前时间增加 或 减少
    times,_:=time.Parse("2006-01-0215:04:05","2014-06-1508:37:18")//给2014年这个值增加30天expireTime:=times.Add(time.Hour*24*30)expireTime:=time.Now().......
  • golang不定参数
    函数定义首先来看如何定义一个不定参数的函数:12funcYourFun(v...interface{}){}该函数定义,定义了一个接受任何数目任何类型参数的函数。这里特殊的语......
  • golang运行grpc示例项目报错:exec: "C:\\Users\\User\\AppData\\Local\\Temp
    golang运行grpc示例项目报错:exec:"C:\Users\User\AppData\Local\Temp\go-build4227870276\b001\exe\server":filedoesnotexist文件找不到,经过排查,发现是编译的文件......