gpt4 book ai didi

go - 在 GO 中使用 map 作为 map 键的替代方法

转载 作者:行者123 更新时间:2023-12-01 22:13:54 25 4
gpt4 key购买 nike

我想用时间戳标记我的 map ,会有各种 map - 动态生成。键将被重复,所以如果出现相同的 map ,我想更新它的值

我从外部来源获取 map ,并希望在阅读时注册

我经常想迭代 map 并找到那些有一段时间没有更新的 map

a = map[string]string{"a":1, "b":2}
b = map[map[string]string]time.Time{}
b[a] = 1

我知道它不受支持,但我想知道有哪些方法可以做到这一点?
首先想到的是:将map序列化为字符串,作为key,,?

最佳答案

制作一个结构来保留您需要的信息:

type MyMap struct {
timestamp time.Time
m map[string]string
}

并通过遍历这样的结构 slice 进行查找:
func lookup(needle map[string]string, haystack []MyMap) (MyMap, bool) {
for _, myMap := range haystack {
if reflect.DeepEqual(needle, myMap.m) {
return myMap, true
}
}
return nil, false
}

或者,将您的 map 转换为 JSON 并将结果用作键:
b, _ := json.Marshal(myMap)
key := string(b)
m, ok := myMaps[key] // myMaps is map[string]MyMap
if !ok {
myMaps[key] = myMap
}

显然, json.Marshal在编码之前对 map 的键进行排序,所以这应该是一个可靠的解决方案。

关于go - 在 GO 中使用 map 作为 map 键的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61848322/

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