go使用Viper管理配置文件的方法步骤
作者:考虑考虑
在项目开发中,需要把一些配置配置提取出来,方便配置和管理,可以使用Viper工具,Viper 是 Go 应用程序的完整配置解决方案,也支持从环境变量中读取,本文给大家介绍了go使用Viper管理配置文件的方法步骤,需要的朋友可以参考下
前言
在项目开发中,需要把一些配置配置提取出来,方便配置和管理,可以使用Viper
工具,Viper 是 Go 应用程序的完整配置解决方案,也支持从环境变量中读取
viper使用
viper仓库为
https://github.com/spf13/viper?tab=readme-ov-file
viper依赖安装
使用以下命令安装viper依赖
go get github.com/spf13/viper
viper使用
(1)定义一个yaml配置文件,如
app: name: hello config: 1
放在config文件下
(2)程序读取配置文件,使用程序
package main import ( "github.com/spf13/viper" "log" ) type App struct { Name string Config int64 } type User struct { App App } func main() { viperConfig := viper.New() // 查找配置文件所在的路径 viperConfig.AddConfigPath("./config") // 如果配置文件的名称中没有扩展名,则需要配置此项 viperConfig.SetConfigType("yml") // 配置文件名称(无扩展名) viperConfig.SetConfigName("app") if err := viperConfig.ReadInConfig(); err != nil { if _, ok := err.(viper.ConfigFileNotFoundError); ok { // 配置文件未找到错误;如果需要可以忽略 log.Println("配置文件没找到") } else { // 配置文件被找到,但产生了另外的错误 log.Println("读取文件异常:", err) } } var user User err := viperConfig.Unmarshal(&user) log.Println(user) log.Println("解析异常:", err) }
将配置文件转为对象,输出结果为
(3)也可以不将配置文件转换成类,直接使用键值取值
package main import ( "github.com/spf13/viper" "log" ) type App struct { Name string Config int64 } type User struct { App App } func main() { viperConfig := viper.New() // 查找配置文件所在的路径 viperConfig.AddConfigPath("./config") // 如果配置文件的名称中没有扩展名,则需要配置此项 viperConfig.SetConfigType("yml") // 配置文件名称(无扩展名) viperConfig.SetConfigName("app") if err := viperConfig.ReadInConfig(); err != nil { if _, ok := err.(viper.ConfigFileNotFoundError); ok { // 配置文件未找到错误;如果需要可以忽略 log.Println("配置文件没找到") } else { // 配置文件被找到,但产生了另外的错误 log.Println("读取文件异常:", err) } } log.Println("值为:", viperConfig.Get("app.name")) log.Println("值为:", viperConfig.Get("app.config")) }
输出结果为
viper写入文件
在开发过程中,我们如果要利用viper写入文件,可以使用
package main import "github.com/spf13/viper" func main() { viper.Set("app.test", "aaa1") //viper.WriteConfig() viper.WriteConfigAs("./config/app.yaml") }
总结
viper
是一个强大的工具类库,可以使用其管理项目中的配置文件,不过go也有其他配置文件,根据自己上手程序和熟练程度而定
以上就是go使用Viper管理配置文件的方法步骤的详细内容,更多关于go Viper管理配置文件的资料请关注脚本之家其它相关文章!