hcyg
V2EX  ›  问与答

Golang for range 的问题

  •  1
     
  •   hcyg · Jan 16, 2020 · 1908 views
    This topic created in 2339 days ago, the information mentioned may be changed or developed.

    在 Golang for range 的时候 为啥直接

    s :=[]int{1,2,3,4}
    data :=make(map[int]*int)
    for k,v := range s {
        fmt.Printf(v) 
        fmt.Printf(&v)
    }
    

    输出 v 是 1234 但是 &v 的时候是同一个地址。。这是为啥。。不是很明白

    linvon
        1
    linvon  
       Jan 16, 2020
    应该是 v 是临时变量,只赋值地址不会变化吧
    hcyg
        2
    hcyg  
    OP
       Jan 16, 2020
    @linvon 整明白了 range 的时候创建了 v 变量 这个 v 变量地址已经定了。。 每次循环都只是赋值内容给 v 刚刚整明白
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3653 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 04:33 · PVG 12:33 · LAX 21:33 · JFK 00:33
    ♥ Do have faith in what you're doing.