【Go】Viper读取配置文件

go get github.com/spf13/viper

1. 设置配置文件的信息

etcd:ip: "192.168.6.106"port: 2379dialTimeout: 3redis:ip: "192.168.6.107"port: 6379password: "root@1028"

2. 读取配置文件的信息

2.1 通过kv的方式
package mainimport ("fmt""github.com/spf13/viper""log"
)func main() {v := viper.New()v.SetConfigName("config")   // 指定配置文件的名称v.SetConfigType("yaml")     // 指定配置文件的类型v.AddConfigPath("./config") // 指定配置文件所在的目录err := v.ReadInConfig() 	// 加载配置文件信息if err != nil {log.Fatal(err)}etcdIP := v.Get("etcd.ip")etcdPort := v.Get("etcd.port")etcdDialTimeout := v.Get("etcd.dialTimeout")fmt.Println(etcdIP, etcdPort, etcdDialTimeout)redisIP := v.Get("redis.ip")redisPort := v.Get("redis.port")redisPassword := v.Get("redis.password")fmt.Println(redisIP, redisPort, redisPassword)
}

在这里插入图片描述

2.2 通过结构体的方式

通过结构体映射配置文件的信息,viper通过mapstructure标签来匹配对应的字段。

package mainimport ("fmt""github.com/spf13/viper""log"
)type Config struct {EtcdConfig  EtcdConfig  `json:"etcd_config" mapstructure:"etcd"`RedisConfig RedisConfig `json:"redis_config" mapstructure:"redis"`
}type EtcdConfig struct {IP          string `json:"ip" mapstructure:"ip"`Port        int    `json:"port" mapstructure:"port"`DialTimeout int    `json:"dial_timeout" mapstructure:"dial_timeout"`
}type RedisConfig struct {IP       string `json:"ip" mapstructure:"ip"`Port     int    `json:"port" mapstructure:"port"`Password string `json:"password" mapstructure:"password"`
}func main() {v := viper.New()v.SetConfigName("config")   // 指定配置文件的名称v.SetConfigType("yaml")     // 指定配置文件的类型v.AddConfigPath("./config") // 指定配置文件所在的目录err := v.ReadInConfig() 	// 加载配置文件信息if err != nil {log.Fatal(err)}var cfg Configif err := v.Unmarshal(&cfg); err != nil {log.Fatal(err)}fmt.Printf("%+v\n", cfg.EtcdConfig)fmt.Printf("%+v\n", cfg.RedisConfig)
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/440294.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【蓝桥杯日记】复盘篇二:分支结构

前言 本篇笔记主要进行复盘的内容是分支结构,通过学习分支结构从而更好巩固之前所学的内容。 目录 前言 目录 🍊1.数的性质 分析: 知识点: 🍅2.闰年判断 说明/提示 分析: 知识点: &am…

03:华为云管理|云主机管理|云项目实战

华为云管理|云主机管理|云项目实战 安全组配置部署跳板机配置yum源,安装软件包优化系统服务安装配置ansible管理主机 模版镜像配置配置yum源,安装软件包优化系统 网站云平台部署实战华为云的负载均衡 安全组配置 设置安全组 云…

基于JAVA+SpringBoot+Vue的前后端分离的美食分享推荐平台2

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 在当今社会&#xff0…

Python爬虫实践指南:利用cpr库爬取技巧

引言 在信息时代,数据是无价之宝。为了获取网络上的丰富数据,网络爬虫成为了不可或缺的工具。在Python这个强大的编程语言中,cpr库崭露头角,为网络爬虫提供了便捷而高效的解决方案。本文将深入探讨如何利用cpr库实现数据爬取的各…

【SpringBoot】springboot整合mongoDB

目录 1.配置 2.使用 创建实体类 创建MongoDB仓库接口 创建一个控制器 1.配置 创建好springboot工程后 引入mongoDB依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongo…

【MySQL 流浪之旅】 第六讲 浅谈 MySQL 锁

系列文章目录 【MySQL 流浪之旅】 第一讲 MySQL 安装【MySQL 流浪之旅】 第二讲 MySQL 基础操作【MySQL 流浪之旅】 第三讲 MySQL 基本工具【MySQL 流浪之旅】 第四讲 MySQL 逻辑备份【MySQL 流浪之旅】 第五讲 数据库设计的三个范式 目录 系列文章目录 一、什么是锁&#x…

25考研北大软微该怎么做?

25考研想准备北大软微&#xff0c;那肯定要认真准备了 考软微需要多少实力 现在的软微已经不是以前的软微了&#xff0c;基本上所有考计算机的同学都知道&#xff0c;已经没有什么信息优势了&#xff0c;只有实打实的有实力的选手才建议报考。 因为软微的专业课也是11408&am…

D1675滤波器和缓冲器用于单通道6阶高清视频滤波驱动电路,可提高视频信号性能

D1675单电源工作电压为2.5V到5V&#xff0c;是一款高清视频信号译码、编码的滤波器和缓冲器。与使用分立元件的传统设计相比&#xff0c;D1675更能节省PCB板面积&#xff0c;并降低成本以及提高视频信号性能。D1675集成了一个直流耦合输入缓冲器、一个消除带外噪声的视频编码器…

C++ 数论相关题目 求组合数Ⅱ

给定 n 组询问&#xff0c;每组询问给定两个整数 a&#xff0c;b &#xff0c;请你输出 Cbamod(1097) 的值。 输入格式 第一行包含整数 n 。 接下来 n 行&#xff0c;每行包含一组 a 和 b 。 输出格式 共 n 行&#xff0c;每行输出一个询问的解。 数据范围 1≤n≤10000 , 1…

时序数据库 Tdengine 执行命令能够查看执行的sql语句

curl是 访问6041端口&#xff0c;在windows系统里没有linux里的curl命令&#xff0c;需要用别的工具实现。我在cmd里是访问6030端口 第一步 在安装是时序数据库的服务器上也就是数据库服务端 进入命令窗口 执行 taos 第二步 执行 show queries\G;

冬季养生攻略,打造健康与美丽的秘诀

冬季养生攻略&#xff0c;打造健康与美丽的秘诀 寒冬时节&#xff0c;寒气袭人&#xff0c;养生更加重要。如何在冬季保持健康与美丽&#xff1f;本文将为您揭示冬季养生的秘诀&#xff0c;让您在寒冷的季节中依然散发健康的光彩。 一、合理饮食&#xff0c;保持体内平衡 冬季…

蓝桥杯---加法变乘法

我们都知道:123 ….. 491225&#xff0c;现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如&#xff1a;123 ... 10*1112 ... 27*2829 ... 492015 就是符合要求的答案. 请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是 提交10)…