gpt4 book ai didi

dictionary - 如何在 Go 中创建一流的 map 迭代器?

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

我正在编写一个迭代 map 中条目的函数。我希望能够干净地处理迭代时从 map 中添加或删除的项目,例如 for k, v := range myMap {//... 确实如此,但我正在处理每次迭代一个键/值对,所以我不能使用范围。我想要这样的东西:

func processItem(i iterator) bool {
k, v, ok := i.next()
if(!ok) {
return false
}
process(v)
return true
}

var m = make(map[string]widget)
// ...
i := makeIterator(m)
for processItem(i) {
// code which might add/remove item from m here
}

我知道 range 使用 src/runtime/hashmap.go 中定义的“hiter”结构和相关函数来执行迭代。有什么方法可以将此迭代器作为具体化的(一流的)Go 对象来访问吗?

是否有一种替代策略可以很好地处理插入/删除但提供一流的迭代器对象来遍历映射?

额外的问题:是否有一种迭代映射的替代策略,它可以处理映射和迭代器被序列化到磁盘然后恢复,迭代继续从哪里停止的? (显然内置的 range 迭代器没有这个能力!)

最佳答案

你不能:(

遍历 map 的唯一方法是使用 for range,您无法从中获取迭代器对象。

关于dictionary - 如何在 Go 中创建一流的 map 迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43213129/

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