Commit d9184077 authored by Hepri's avatar Hepri

Update templatefunc.go

parent d4e15c0b
...@@ -698,29 +698,36 @@ func MapGet(arg1 interface{}, arg2 ...interface{}) (interface{}, error) { ...@@ -698,29 +698,36 @@ func MapGet(arg1 interface{}, arg2 ...interface{}) (interface{}, error) {
storedVal := arg1Val.MapIndex(arg2Val) storedVal := arg1Val.MapIndex(arg2Val)
var result interface{}
if storedVal.IsValid() {
switch arg1Type.Elem().Kind() { var result interface{}
case reflect.Bool:
result = storedVal.Bool() switch arg1Type.Elem().Kind() {
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: case reflect.Bool:
result = storedVal.Int() result = storedVal.Bool()
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
result = storedVal.Uint() result = storedVal.Int()
case reflect.Float32, reflect.Float64: case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
result = storedVal.Float() result = storedVal.Uint()
case reflect.String: case reflect.Float32, reflect.Float64:
result = storedVal.String() result = storedVal.Float()
default: case reflect.String:
result = storedVal.Interface() result = storedVal.String()
} default:
result = storedVal.Interface()
}
// if there is more keys, handle this recursively // if there is more keys, handle this recursively
if len(arg2) > 1 { if len(arg2) > 1 {
return MapGet(result, arg2[1:]...) return MapGet(result, arg2[1:]...)
} else {
return result, nil
}
} else { } else {
return result, nil return nil, nil
} }
} else { } else {
return nil, nil return nil, nil
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment