我试图弄清楚当我创建连接但什么也没找到时如何使用用户名/密码进行身份验证。所以,我的问题:
我遇到了如何使用附加条件递归遍历 map[string]interface{} 的问题。
1) 如果一个值是一个映射 - 递归调用该方法
2) 如果一个值是一个数组 - 调用数组的方法
3) 如果值不是地图 - 处理它。
现在,当方法尝试执行时doc.throughMap(mv)- 发生错误 那么在reflect确认该值是映射还是数组后,如何将某些值转换为所需的类型?
type MapType map[string]interface{}
type ArrayType []interface{}
func (doc *Document) throughMap(docMap MapType) MapType {
for k, v := range docMap {
vt := reflect.TypeOf(v)
switch vt.Kind() {
case reflect.Map:
if mv, ok := v.(map[string]interface{}); ok {
docMap[k] = doc.throughMap(mv)
} else {
panic("error.")
}
case reflect.Array, reflect.Slice:
if mv, ok := v.([]interface{}); ok {
docMap[k] = doc.throughArray(mv)
} else …Run Code Online (Sandbox Code Playgroud)