目录
  • 一、Viper 是什么?
  • 二、安装 Viper
  • 三、Viper 有什么作用
  • 四、Viper demo 可供参考
    • 注意
  • 五、总结

    一、Viper 是什么?

    Viper 是应用程序的完整配置的管理工具,用于在应用程序中工作,可以处理所有类型的配置需求和格式。

    二、安装 Viper

    go get github.com/spf13/viper

    三、Viper 有什么作用

    • 设置默认值
    • 读取 JSON、TOML、YAML(YML)、HCL、envfile 和 Java properties 属性配置文件
    • 实时查看和重读配置文件(可选)
    • 从环境变量中读取
    • 从远程配置系统(etcd 或 Consor)读取数据,并观察变化
    • 从命令行标志读取
    • 从缓冲区读取
    • 设置显式值

    四、Viper demo 可供参考

    func main() {
    	ReadIni()
    	ReadYml()
    }
    func ReadIni() {
    	v := viper.New()
        v.AddConfigPath("./conf")  // 路径(当前路径下的conf文件夹)
    	v.SetConfigName("configA") // 名称
    	v.SetConfigType("ini")     // 类型
    	err := v.ReadInConfig() // 读配置
    	if err != nil {
    		if _, ok := err.(viper.ConfigFileNotFoundError); ok {
    			fmt.Println("找不到配置文件..")
    		} else {
    			fmt.Println("配置文件出错..")
    		}
    	}
    	// [section] 如果没写就是 default,也就是下面的 key 变成 default.username
    	s1 := v.GetString("db.username")
    	s2 := v.GetInt("web.port")
    	fmt.Printf("ini 文件的数据库名字:%v, 网络端口号:%v \n", s1, s2)
    }
    func ReadYml() {
    	v := viper.New()
    	v.AddConfigPath("./conf")
    	v.SetConfigName("configB")
    	v.SetConfigType("yml")
    	err := v.ReadInConfig()
    	if err != nil {
    		if _, ok := err.(viper.ConfigFileNotFoundError); ok {
    			fmt.Println("找不到配置文件..")
    		} else {
    			fmt.Println("配置文件出错..")
    		}
    	}
    	s1 := v.GetString("db.username")
    	s2 := v.GetInt("web.port")
    	s3 := v.GetString("app.time")
    	fmt.Printf("yml 文件的数据库名字:%v, 网络端口号:%v, apptime:%v \n", s1, s2, s3)
    }

    结果:

    ini 文件的数据库名字:admin, 网络端口号:8080
    yml 文件的数据库名字:root, 网络端口号:8088, apptime:05/30

    配置文件内容

    • configA.ini
    ;数据库配置
    [db]
    username=admin
    password=123
    driver=mysql
    port=3306
    ;网络配置
    [web]
    port=8080
    • configB.yml
    # 数据库配置
    db: 
        username: root
        password: 123
        driver: mysql
        port: 3306
    # 网络配置
    web:
        port: 8088
    # APP配置
    app: {id: 10,time: 05/30}

    注意

    以上例子在根目录下面创建了 conf 文件夹,然后创建了 configA.ini 和 configB.yml 文件

    五、总结

    使用 viper 能够很好的去管理你的配置文件信息,比如数据库的账号密码,服务器监听的端口,你可以通过更改配置文件去更改这些内容,而不用定位到那一段代码上去,提高了开发效率。 需要注意的是,你还需要补充配置文件的格式相关的知识,才能更好的去使用它。

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。