From 62dd32f61b8971eb7b4e094ab9ac4c285a5054fe Mon Sep 17 00:00:00 2001 From: Tai Groot Date: Fri, 3 Nov 2023 04:16:29 -0700 Subject: [PATCH] fix slice returners --- getters.go | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/getters.go b/getters.go index a71b149..0fd6151 100644 --- a/getters.go +++ b/getters.go @@ -143,8 +143,17 @@ func (c *ConfigManager) GetStringSlice(key string) []string { } } switch val := v.Value.(type) { - case []string: - return val + case []any: + var ret []string + for _, v := range val { + switch v := v.(type) { + case string: + ret = append(ret, v) + default: + ret = append(ret, fmt.Sprintf("%v", v)) + } + } + return ret default: return nil } @@ -191,8 +200,29 @@ func (c *ConfigManager) GetIntSlice(key string) []int { } } switch val := v.Value.(type) { - case []int: - return val + case []any: + var ret []int + for _, v := range val { + switch v := v.(type) { + case int: + ret = append(ret, v) + case string: + i, err := strconv.Atoi(v) + if err != nil { + continue + } + ret = append(ret, i) + case float32: + ret = append(ret, int(v)) + case float64: + ret = append(ret, int(v)) + case nil: + continue + default: + continue + } + } + return ret default: return nil }