本文整理汇总了Golang中github.com/funkygao/jsconf.Conf.Interface方法的典型用法代码示例。如果您正苦于以下问题:Golang Conf.Interface方法的具体用法?Golang Conf.Interface怎么用?Golang Conf.Interface使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/funkygao/jsconf.Conf
的用法示例。
在下文中一共展示了Conf.Interface方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: handleSection
// recursively
func handleSection(section *conf.Conf) {
ident := section.String(IDENT, "")
if ident != "" {
if _, present := graph[ident]; present {
fmt.Printf("ident[%s]duplicated\n", ident)
os.Exit(1)
}
ie := &identEntry{}
ie.matches = make([]string, 0, 10)
ie.disabled = section.Bool(DISABLED, false)
if section.StringList(MATCH, nil) == nil {
ie.isInput = true
}
graph[ident] = ie
pluginName := section.String(NAME, "")
if pluginName != "" {
identName[pluginName] = ident
}
}
matches := section.StringList(MATCH, nil)
if matches != nil {
pluginName := section.String(NAME, "")
if pluginName == "" {
fmt.Printf("plugin match %v has no 'name' key\n", matches)
os.Exit(1)
}
for _, id := range matches {
if _, present := graph[id]; present {
graph[id].matches = append(graph[id].matches, pluginName)
} else {
fmt.Printf("%15s -> %s\n", id, pluginName)
}
}
}
sub := section.Interface("", nil).(map[string]interface{})
if sub == nil {
return
}
for k, v := range sub {
if x, ok := v.([]interface{}); ok {
switch x[0].(type) {
case string, float64, int, bool, time.Time:
// this section will never find 'ident'
continue
}
for i := 0; i < len(section.List(k, nil)); i++ {
key := fmt.Sprintf("%s[%d]", k, i)
sec, err := section.Section(key)
if err != nil {
continue
}
handleSection(sec)
}
}
}
}