Go 有迭代器数据类型吗?

发布于 2024-12-02 18:36:46 字数 238 浏览 2 评论 0原文

如何编写可以执行类似于 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;
}

How do I write Go code that can do something like a map iterator in C++?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

最丧也最甜 2024-12-09 18:36:46

在 Go 中,使用 range 子句迭代映射非常容易。

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

for key, value := range myMap {
  // Do something.
  fmt.Println(key, value)
}

可以打印

one 1
two 2

请注意,您以未定义的顺序对映射进行迭代,因为它是由哈希表而不是树支持的。

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

In go, it is pretty easy to iterate over a map using the range clause.

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

for key, value := range myMap {
  // Do something.
  fmt.Println(key, value)
}

Could print

one 1
two 2

Note that you iterate in an undefined order over a map, as it is backed by a hash table rather than a tree.

The go language spec describes what the range clause returns, and you can see the effective go page for some more examples.

水溶 2024-12-09 18:36:46

如果您只是想在地图中查找键,请使用以下命令:

package main

import (
    "fmt"
)

type Point struct {
    x, y int
}

func main() {
    points := make(map[string]*Point)

    p := &Point{1, 1}
    points["one"] = p

    if p1, found := points["one"]; found {
        p1.x = 100
    }

    fmt.Println(p)
}

If you're just trying to find a key in a map, then use the following:

package main

import (
    "fmt"
)

type Point struct {
    x, y int
}

func main() {
    points := make(map[string]*Point)

    p := &Point{1, 1}
    points["one"] = p

    if p1, found := points["one"]; found {
        p1.x = 100
    }

    fmt.Println(p)
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文