Go嵌套地图迭代

Yon*_*yer -2 go

我试图迭代 map 的整个键eventObj,包括其中的嵌套对象,并检查每个键和值以进行进一步的操作。

因此,如果我看到另一个嵌套映射,我也需要迭代它。

我尝试通过类型与map[string]interfaceor的比较来做到这一点map[string]interface{},但这似乎是一个语法错误。

我的问题是如何识别嵌套地图?

(请注意,我可以有多个嵌套地图)

func lookForEmailsInEvent(eventObj map[string]interface {}) {
for key, _ := range eventObj {
    valueType := reflect.TypeOf(eventObj[key]).String()
    fmt.Printf("%v : %v\n", key, valueType)

    if valueType == map[string]interface {
        lookForEmailsInEvent(eventObj[key])
    } else if key == "email" {
        // do something...
    }
}
Run Code Online (Sandbox Code Playgroud)

}

eventObj这是(终端截图) 的值:在此输入图像描述

Zom*_*mbo 6

以下是如何递归嵌套数据:

func lookForEmailsInEvent(eventObj map[string]any) {
    for k, v := range eventObj {
        if v, ok := v.(map[string]any); ok {
            lookForEmailsInEvent(v)
        } else if k == "email" {
            // do something
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码使用类型断言来确定值是否为map[string]any.

Go 之旅介绍了类型断言