前言
在项目开发中,需要把一些配置配置提取出来,方便配置和管理,可以使用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管理配置文件的资料请关注代码网其它相关文章!
发表评论