Go有迭代器数据类型吗?

jin*_*hao 3 iterator specifications map go

如何在C++中编写可以执行类似地图迭代器的Go代码?

typedef std::map<std::string, MyStruct> MyMap;
MyMap::iterator it = myMap.find("key");
if(it!=myMap.end()) {
   it->v1 = something;
   it->v2 = something;
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*ece 8

在go中,使用range子句迭代地图非常容易.

myMap := map[string]int {"one":1, "two":2}

for key, value := range myMap {
  // Do something.
  fmt.Println(key, value)
}
Run Code Online (Sandbox Code Playgroud)

可以打印

one 1
two 2
Run Code Online (Sandbox Code Playgroud)

请注意,您在地图上以未定义的顺序迭代,因为它由哈希表而不是树支持.

go 语言规范描述了range子句返回的内容,您可以看到更多示例的有效go页面.