上面的例子只是解析了最简单的Yaml文件,没有嵌套的Yaml文件,但是实际应用中,嵌套的情况经常出现。
假设yaml配置文件config.yaml的内容为:

redis:
	address: 127.0.0.0
	password: 123a
mysql:
	username: momo
	password: 123a

解析过程中,我们只需改变Config的结构体即可,解析函数参照上边的例子。解析的结构体可写为以下两种格式。

type Config struct{
	Redis struct{
		Address string `yaml:"address"`
		Password string `yaml:"password"`
	}
	Mysql struct{
		Username string `yaml:"username"`
		Password string `yaml:"password"`
	}
}

或者:

type Config struct{
	Redis Redis `yaml:"redis"` //或者:`yaml:"redis, inline"`
	Mysql Mysql `yaml:"mysql"` //或者:`yaml:"mysql, inline"`
}
type Redis struct{
	Address string `yaml:"address"`
	Password string `yaml:"password"`
}
type Mysql struct{
	Username string `yaml:"username"`
	Password string `yaml:"password"`
}

然后用上例中的Load函数进行解析即可。