diff --git a/viper.go b/viper.go index 31b41a6..be8500a 100644 --- a/viper.go +++ b/viper.go @@ -620,8 +620,14 @@ func (v *Viper) Get(key string) interface{} { return cast.ToTime(val) case time.Duration: return cast.ToDuration(val) + case []bool: + return cast.ToBoolSlice(val) case []string: return cast.ToStringSlice(val) + case []int: + return cast.ToIntSlice(val) + case []time.Duration: + return cast.ToDurationSlice(val) } return val } @@ -893,7 +899,7 @@ func (v *Viper) find(lcaseKey string) interface{} { return cast.ToInt(flag.ValueString()) case "bool": return cast.ToBool(flag.ValueString()) - case "stringSlice": + case "stringSlice", "stringArray", "boolSlice", "ipSlice", "uintSlice", "intSlice": s := strings.TrimPrefix(flag.ValueString(), "[") s = strings.TrimSuffix(s, "]") res, _ := readAsCSV(s) @@ -962,7 +968,7 @@ func (v *Viper) find(lcaseKey string) interface{} { return cast.ToInt(flag.ValueString()) case "bool": return cast.ToBool(flag.ValueString()) - case "stringSlice": + case "stringSlice", "stringArray", "boolSlice", "ipSlice", "uintSlice", "intSlice": s := strings.TrimPrefix(flag.ValueString(), "[") s = strings.TrimSuffix(s, "]") res, _ := readAsCSV(s)