gpt4 book ai didi

dictionary - 无法分配给 map 中的对

转载 作者:IT王子 更新时间:2023-10-29 01:23:37 28 4
gpt4 key购买 nike

我的 go 程序中定义了以下对

type pair struct {
a float64
b float64
}

然后我创建一个 map :

dictionary map[string]pair

我先添加一个元素:

dictionary["xxoo"] = pair{5.0, 2.0}

然后我尝试这样做:

dictionary["xxoo"].b = 5.0  // try to change from 2.0 to 5.0

最后一行没有编译,它说“不能分配给它”

我想知道这是什么原因?

最佳答案

为了给结构字段赋值,该结构必须是“可寻址的”。 "Address Operators" 中涵盖了可寻址性语言规范部分。

map 值不可寻址, map 实现可以根据需要在内存中自由移动值。因为映射值不可寻址,所以您不能对值使用选择器 (.) 运算符以分配给结构字段。如果您使用指针类型作为映射值,即 map[string]*pair,则指针间接满足可寻址性要求。

dict := make(map[string]*pair)
dict["xxoo"] = &pair{5.0, 2.0}
dict["xxoo"].b = 5.0

如果您正在使用值,则需要通过赋值复制现有值,或提供一个全新的值:

dict := make(map[string]pair)
dict["xxoo"] = pair{5.0, 2.0}

// copy the value, change one field, then reassign
p := dict["xxoo"]
p.b = 5.0
dict["xxoo"] = p

// or replace the value in full
dict["xxoo"] = pair{5.0, 5.0}

关于dictionary - 无法分配给 map 中的对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38230997/

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