func (v *Viper) Get(key string) interface{} { path := strings.Split(key, v.keyDelim) val := v.find(strings.ToLower(key)) if val == nil { source := v.find(path[0]) if source == nil { return nil } if reflect.TypeOf(source).Kind() == reflect.Map { val = v.searchMap(cast.ToStringMap(source), path[1:]) } } switch val.(type) { case bool: return cast.ToBool(val) case string: return cast.ToString(val) case int64, int32, int16, int8, int: return cast.ToInt(val) case float64, float32: return cast.ToFloat64(val) case time.Time: return cast.ToTime(val) case time.Duration: return cast.ToDuration(val) case []string: return val } return val }
func (v *Viper) GetTime(key string) time.Time { return cast.ToTime(v.Get(key)) }