我试图迭代 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)
}
以下是如何递归嵌套数据:
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.