多層map空指針處理
时间: 2023-11-18 07:53:49 浏览: 98
处理多层map空指针可以使用以下方法:
1. 使用if语句判断每一层map是否为空指针,如果为空则创建一个新的map。
2. 使用递归函数来处理多层map,递归函数中判断当前层map是否为空指针,如果为空则创建一个新的map,并将其作为下一层map的参数传入递归函数中。
3. 使用第三方库,如github.com/mitchellh/mapstructure,来处理多层map空指针。
以下是使用if语句判断每一层map是否为空指针的示例代码:
```
func getValue(m map[string]interface{}, keys ...string) interface{} {
for _, k := range keys {
if val, ok := m[k]; ok {
if m, ok := val.(map[string]interface{}); ok {
// 如果当前层map不为空指针,则继续往下遍历
m = val.(map[string]interface{})
} else {
// 如果当前层map为空指针,则创建一个新的map
m = make(map[string]interface{})
m[k] = val
}
} else {
// 如果当前层map为空指针,则创建一个新的map
m = make(map[string]interface{})
m[k] = nil
}
}
return m[keys[len(keys)-1]]
}
```
阅读全文