如何在go

时间:2015-07-26 03:51:35

标签: dictionary go

我正在尝试修改IPaddr以进行“环回”,但似乎无法直接访问该元素。

addrs["loopback"][0] = byte(2) //cannot assign to addrs["loopback"][0]

我该如何去做?

package main

import "fmt"

type IPAddr [4]byte

func main() {
    addrs := map[string]IPAddr{
        "loopback":  {127, 0, 0, 1},
        "googleDNS": {8, 8, 8, 8},
    }
    addrs["loopback"][0] = byte(2)
    for n, a := range addrs {
        fmt.Printf("%v: %v\n", n, a)
    }
}

1 个答案:

答案 0 :(得分:4)

由于地图值不可寻址,您需要重新分配整个值:

09

playground example

如果您将地图值类型更改为* IPAddr,则分配

addr := addrs["loopback"]
addr[0] = 2
addrs["loopback"] = addr

的工作原理。在这种情况下,代码将分配给映射指向的值。该值是可寻址的。

playground example