gpt4 book ai didi

Go相当于Python的字典

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

我正在寻找一种使用 Go 为每个键存储多个值的方法(就像我们在 python 中使用字典一样)。有没有一种方法可以在 Go 中实现?

最佳答案

根据您在评论中的回复,我建议使用结构进行类似以下的操作(尽管如果您只对 slice 中每个项目的单个值(如 name 感兴趣,那么您可以只使用一个 map[int][]string{}

type Thing struct {
name string
age int
}

myMap := map[int][]Thing{}

如果你想添加东西,那么你只需做...

myMap[100] = append(myMap[100], Thing{"sberry": 37})

或者如果您想就地创建它:

myMap := map[int][]Thing{
100: []Thing{Thing{"sberry", 37}},
2: []Thing{Thing{"johndoe", 22}},
}

编辑: 添加一个基于评论的“nameIn”函数作为演示:

func nameIn(things []Thing, name string) bool {
for _, thing := range things {
if thing.name == name {
return true
}
}
return false
}

if nameIn(myMap[100], "John") {
...

如果 slice 真的很大并且速度很重要,那么您可以保留一个反向查找映射,例如 map[string]int,其中一个条目是 John: 100,但是您很可能需要使用一些用户定义的函数来修改 map ,以便它也可以更改反向查找。这也会通过要求唯一的名称来限制您。

nameIn 很可能会正常工作。

关于Go相当于Python的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40254007/

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