From 8d7803d99d91a8c66403fe145deec7bad481b4e4 Mon Sep 17 00:00:00 2001 From: liangzy Date: Mon, 10 Aug 2020 09:59:29 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BA=8C=E7=BA=A7=E8=8A=82=E7=82=B9=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E8=A7=A3=E9=87=8A=E5=AD=97=E7=AC=A6=E4=B8=B2=E4=BC=98?= =?UTF-8?q?=E5=8C=96=202.=E6=A0=B9=E8=8A=82=E7=82=B9=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E8=A7=A3=E9=87=8A=E6=88=90=E5=AD=97=E7=AC=A6=E4=B8=B2=E7=9A=84?= =?UTF-8?q?bug=20Fixed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- grconfig.go | 2 -- grconfig_test.go | 4 ++++ yaml.go | 13 ++++++++++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/grconfig.go b/grconfig.go index 091dfcb..da479ff 100644 --- a/grconfig.go +++ b/grconfig.go @@ -85,11 +85,9 @@ func recursiveParse(item string, v interface{}) interface{} { if item == "" { return v } - chunks := strings.SplitN(item, ".", 2) if n, err := strconv.Atoi(chunks[0]); err == nil { - if tmp, ok := v.([]interface{}); reflect.TypeOf(v).Kind() == reflect.Slice && ok { v = tmp[n] } diff --git a/grconfig_test.go b/grconfig_test.go index 5d172ba..173e11b 100644 --- a/grconfig_test.go +++ b/grconfig_test.go @@ -36,4 +36,8 @@ func TestNew(t *testing.T) { var s string gr.Item("db.default.host", &s) fmt.Println("item形式解释符串:", s) + + // 根解释字符串 + fmt.Println("根解释字符串", gr.String("db")) + fmt.Println("二级解释字符串", gr.String("db.default")) } diff --git a/yaml.go b/yaml.go index 1db79b9..0a4e2fc 100644 --- a/yaml.go +++ b/yaml.go @@ -16,10 +16,21 @@ type ConfigerChannelYAML struct { func (conf *ConfigerChannelYAML) String(item string) string { chunks := strings.SplitN(item, ".", 2) - target := recursiveParse(chunks[1], conf.tmp) + var target interface{} + if len(chunks) > 1 { + target = recursiveParse(chunks[1], conf.tmp) + } else { + target = conf.tmp + } + if str, ok := target.(string); ok { return str + } else { + if out, err := yaml.Marshal(target); err == nil { + return bytes.NewBuffer(out).String() + } } + return "" }