gpt4 book ai didi

dictionary - 如何在go中修改 map

转载 作者:IT王子 更新时间:2023-10-29 00:44:01 25 4
gpt4 key购买 nike

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

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

如何在 go 中完成?

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)
}
}

最佳答案

因为映射值不可寻址,你需要重新分配整个值:

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

playground example

如果将映射值类型更改为*IPAddr,则赋值

addrs["loopback"][0] = 2

有效。在这种情况下,代码正在分配给 map 指向的值。该值是可寻址的。

playground example

关于dictionary - 如何在go中修改 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31633453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com