首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迭代通过golang地图

迭代通过golang地图
EN

Stack Overflow用户
提问于 2011-11-05 15:03:39
回答 3查看 113.4K关注 0票数 99

我有一个类型为:map[string]interface{}的映射

最后,我可以创建类似这样的东西(在使用goyaml从yml文件反序列化之后)

代码语言:javascript
复制
mymap = map[foo:map[first: 1] boo: map[second: 2]]

我如何遍历这个映射呢?我尝试了以下几种方法:

代码语言:javascript
复制
for k, v := range mymap{
...
}

但我得到一个错误:

代码语言:javascript
复制
cannot range over mymap
typechecking loop involving for loop

请帮帮忙。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-05 15:57:04

例如,

代码语言:javascript
复制
package main

import "fmt"

func main() {
    type Map1 map[string]interface{}
    type Map2 map[string]int
    m := Map1{"foo": Map2{"first": 1}, "boo": Map2{"second": 2}}
    //m = map[foo:map[first: 1] boo: map[second: 2]]
    fmt.Println("m:", m)
    for k, v := range m {
        fmt.Println("k:", k, "v:", v)
    }
}

输出:

代码语言:javascript
复制
m: map[boo:map[second:2] foo:map[first:1]]
k: boo v: map[second:2]
k: foo v: map[first:1]
票数 116
EN

Stack Overflow用户

发布于 2016-07-01 16:10:37

你可以通过一行代码来实现:

代码语言:javascript
复制
mymap := map[string]interface{}{"foo": map[string]interface{}{"first": 1}, "boo": map[string]interface{}{"second": 2}}
for k, v := range mymap {
    fmt.Println("k:", k, "v:", v)
}

输出为:

代码语言:javascript
复制
k: foo v: map[first:1]
k: boo v: map[second:2]
票数 4
EN

Stack Overflow用户

发布于 2019-05-20 20:14:55

你可以像这样用多行写出来,

代码语言:javascript
复制
$ cat dict.go
package main

import "fmt"

func main() {
        items := map[string]interface{}{
                "foo": map[string]int{
                        "strength": 10,
                        "age": 2000,
                },
                "bar": map[string]int{
                        "strength": 20,
                        "age": 1000,
                },
        }
        for key, value := range items {
                fmt.Println("[", key, "] has items:")
                for k,v := range value.(map[string]int) {
                        fmt.Println("\t-->", k, ":", v)
                }

        }
}

和输出:

代码语言:javascript
复制
$ go run dict.go
[ foo ] has items:
        --> strength : 10
        --> age : 2000
[ bar ] has items:
        --> strength : 20
        --> age : 1000
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8018719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档