package config type Config interface { Name() string Children() []Config AddChild(Config) } type BaseConfig struct { name string children []Config } func (cfg *BaseConfig) Name() string { return cfg.name } func (cfg *BaseConfig) Children() []Config { return cfg.children } func (cfg *BaseConfig) AddChild(child Config) { cfg.children = append(cfg.children, child) } func MakeConfig(name string) Config { return &BaseConfig{name: name} } func Setup(cfg Config) Config { return cfg }