func (c *ConfigFile) GetString(section string, option string) (value string, err error) {
	value, err = c.GetRawString(section, option)
	if err != nil {
		return "", err
	}
	return value, nil
}
GetString gets the string value for the given option in the section.
If the value needs to be unfolded (see e.g. %(host)s example in the beginning of this documentation),
then GetString does this unfolding automatically, up to DepthValues number of iterations.
It returns an error if either the section or the option do not exist, or the unfolding cycled.
package conf
import (
	"strconv"
	"strings"
)
func (c *ConfigFile) GetSections() (sections []string) {
	sections = make([]string, len(c.data))
	i := 0
	for s, _ := range c.data {
		sections[i] = s
		i++
	}
	return sections
}
func (c *ConfigFile) HasSection(section string) bool {
	if section == "" {
		section = "default"
	}
	_, ok := c.data[strings.ToLower(section)]
	return ok
}
func (c *ConfigFile) GetOptions(section string) (options []string, err error) {
	if section == "" {
		section = "default"
	}
	section = strings.ToLower(section)
	if _, ok := c.data[section]; !ok {
		return nil, GetError{SectionNotFound, "", "", section, ""}
	}
	options = make([]string, len(c.data[DefaultSection])+len(c.data[section]))
	i := 0
	for s, _ := range c.data[DefaultSection] {
		options[i] = s
		i++
	}
	for s, _ := range c.data[section] {
		options[i] = s
		i++
	}
	return options, nil
}
func (c *ConfigFile) HasOption(section string, option string) bool {
	if section == "" {
		section = "default"
	}
	section = strings.ToLower(section)
	option = strings.ToLower(option)
	if _, ok := c.data[section]; !ok {
		return false
	}
	_, okd := c.data[DefaultSection][option]
	_, oknd := c.data[section][option]
	return okd || oknd
}
func (c *ConfigFile) GetRawString(section string, option string) (value string, err error) {
	if section == "" {
		section = "default"
	}
	section = strings.ToLower(section)
	option = strings.ToLower(option)
	if _, ok := c.data[section]; ok {
		if value, ok = c.data[section][option]; ok {
			return value, nil
		}
		return "", GetError{OptionNotFound, "", "", section, option}
	}
	return "", GetError{SectionNotFound, "", "", section, option}
}