From ba89253e4a72db3c878dda1f0a18f5edf4751009 Mon Sep 17 00:00:00 2001 From: umasuo Date: Fri, 20 Apr 2018 19:40:06 +0800 Subject: [PATCH] Update yaml.go add support for multilevel yaml config --- config/yaml/yaml.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/config/yaml/yaml.go b/config/yaml/yaml.go index 51fe44d3..d83eb692 100644 --- a/config/yaml/yaml.go +++ b/config/yaml/yaml.go @@ -285,9 +285,23 @@ func (c *ConfigContainer) getData(key string) (interface{}, error) { if len(key) == 0 { return nil, errors.New("key is empty") } + keys := strings.Split(key, ".") + tmpData := c.data + for _, k := range keys { + if v, ok := tmpData[k]; ok { + switch v.(type) { - if v, ok := c.data[key]; ok { - return v, nil + case map[string]interface{}: + { + tmpData = v.(map[string]interface{}) + } + default: + { + return v, nil + } + + } + } } return nil, fmt.Errorf("not exist key %q", key) }