treeNode := gmap.New(true) for _, item := range list { if item.ParentId == 0 { treeNode.Set(item.Id, item) } } for _, v := range treeNode { g.Dump(v) } 运行上方代码为什么会提示cannot range over treeNode (variable of type *gmap.AnyAnyMap) 要怎么才能循环取出treeNode的元素
时间: 2024-03-10 16:45:02 浏览: 67
jqueryeasyui_tree_comtree.docx
提示 "cannot range over treeNode (variable of type *gmap.AnyAnyMap)" 的原因是 `treeNode` 是一个指向 `gmap.AnyAnyMap` 类型的指针,而不是 `gmap.AnyAnyMap` 类型本身。因此,您需要使用 `treeNode.Iterator()` 方法来获取一个迭代器,然后使用 `for` 循环来遍历它。
以下是修改后的代码示例:
```
treeNode := gmap.New(true)
for _, item := range list {
if item.ParentId == 0 {
treeNode.Set(item.Id, item)
}
}
iter := treeNode.Iterator()
for {
if item, ok := iter.Next(); ok {
g.Dump(item)
} else {
break
}
}
```
这里使用了 `iter.Next()` 方法来逐个获取 `treeNode` 的键值对,直到迭代器返回 false 为止。
阅读全文