一、通过yaml.v2读取配置文件数据,需要导入yaml.v2的包
1、首先在config文件夹下定义配置文件config.yml,内容如图:
app模块,下面包含两个字段host,port
log模块:下面包含两个字段suffix,maxSize
server模块:只有一个参数mysql
2、在config文件夹中定义配置文件对应的结构体,将结构体App和Log如图:
App字段:类型为capp,也是一个结构体,内嵌进来
Log字段:类型为clog,也是一个结构体,内嵌进来
Server字段:类型为string,对应的是配置文件中的server
注:为什么要通过capp和clog内嵌进来,因为配置文件中的app和log为多层级的,不像server就是单纯的键值,因此需要通过结构体的方式将app和log映射为对应结构体然后内嵌入Config结构体中
3、在config文件夹中,定义sall.go文件,其中包含了结构体capp和clog,如图:
4、在config外层创建文件peizhi.go,内容如下:
5、运行结果如下:
注:上图中的config.go与sall.go在config文件夹下,因此内嵌的时候直接用的结构体小写名即可,如果不在一起,要用包名.结构体名,并且结构体名需要大写
二、使用Viper读取配置文件
Viper可以处理多种格式的配置,目前已支持从JSON、TOML、YAML、HCL、INI和Java properties文件中读取配置数据,Viper还能监视配置文件的变动、重新读取配置文件。在项目中可以用作热加载,导入包如下:
1、在上面例子基础上,其余不用动,修改peizhi.go文件,内容如下:
运行结果如下:
领取专属 10元无门槛券
私享最新 技术干货