golang读取配置文件
一、读取yml配置文件
方法一、通过yaml.v2读取配置文件数据,需要导入yaml.v2的包
go get gopkg.in/yaml.v2
1、首先在config文件夹下定义配置文件config.yml,内容如图:

- app模块,下面包含两个字段host,port
- log模块:下面包含一个字段maxSize
- server模块:只有一个值mysql
2、在config文件夹中定义配置文件对应的结构体,如图:

- App字段:类型为configapp,也是一个结构体,内嵌进来
- Log字段:类型为configlog,也是一个结构体,内嵌进来
- Server字段:类型为string,对应的是配置文件中的server
注:为什么要通过configapp和configlog内嵌进来,因为配置文件中的app和log为多层级的,不像server就是单纯的键值,因此需要通过结构体的方式将app和log映射为对应结构体然后内嵌入Config结构体中,Config结构体标签中的app、log、server刚好对应配置文件中的三个层级,必须要写,否则反序列化没数据
4、在config外层创建文件peizhi.go,内容如下:

5、运行结果如下:

方法二、使用Viper读取配置文件文件
Viper可以处理多种格式的配置,目前已支持从JSON、TOML、YAML、HCL、INI和Java properties文件中读取配置数据,Viper还能监视配置文件的变动、重新读取配置文件。在项目中可以用作热加载
go get github.com/spf13/viper
1、在上面例子基础上,其余不用动,修改peizhi.go文件,内容如下:

运行结果如下:

附加:
上面例子读取的都是单个配置,如果要读取数据为一个切片,此时应该怎么办呢?
1、下面例子表示读取yaml中的配置文件到一个数组中,首先查看配置文件写法,如图:

2、读取配置文件的config.go文件内容如下:

注:结构体字段名首字母要大写,否则反序列化不成功,结构体名字如果不需要导出那就不用大写
3、定义主文件来调用读取配置文件,如图:

运行结果如下:



