package config import ( "strings" ) // Sub returns subsection of the Config by name. // // Returns nil if subsection if missing. func (x *Config) Sub(name string) *Config { // copy path in order to prevent consequent violations ln := len(x.path) path := make([]string, ln, ln+1) copy(path, x.path) return &Config{ v: x.v, path: append(path, name), } } // Value returns configuration value by name. // // Result can be casted to a particular type // via corresponding function (e.g. StringSlice). // Note: casting via Go `.()` operator is not // recommended. // // Returns nil if config is nil. func (x *Config) Value(name string) interface{} { return x.v.Get(strings.Join(append(x.path, name), separator)) }