in sdk/requests/acs_request.go [440:463]
func handleMap(request AcsRequest, dataValue reflect.Value, prefix, name, fieldPosition string, index int) (err error) {
valueField := dataValue.Field(index)
if valueField.IsValid() && !valueField.IsNil() {
iter := valueField.MapRange()
for iter.Next() {
k := iter.Key()
v := iter.Value()
key := prefix + name + ".#" + strconv.Itoa(k.Len()) + "#" + k.String()
if v.Kind() == reflect.Ptr || v.Kind() == reflect.Interface {
elementValue := v.Elem()
err = handleParam(request, elementValue, key, fieldPosition)
if err != nil {
return err
}
} else if v.IsValid() && v.IsNil() {
err = handleParam(request, v, key, fieldPosition)
if err != nil {
return err
}
}
}
}
return nil
}