首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Go使用ViperYAML管理配置文件

port: 8080 database: user: admin password: secret 读取配置 Go应用程序使用Viper读取上述YAML配置文件: go package...Viper库使得管理配置变得更加简单,无论是小型项目还是复杂的微服务架构,都能提高开发维护的效率。...读取列表配置 要在Go程序读取一个列表,我们可以使用Viper的Get函数配合类型断言,或直接使用专门的函数如GetStringMapString(适用于键值对列表)。...这种方法使得处理复杂的配置数据变得更加直观简单,尤其是当配置数据结构较深或者配置信息较多时。通过结合使用ViperGo的强类型系统,我们不仅能够提高代码的可读性,还能在编译时就捕获到潜在的错误。...总结 本文介绍了如何利用Viper库配合YAML配置文件Go项目中管理配置。通过使用Viper,可以简化配置管理过程,同时保持代码的可维护性可扩展性。

27711
您找到你想要的搜索结果了吗?
是的
没有找到

我篡改了系统命令惊现事故,竟要扣我年终奖-Golang-cobra

如下main.go文件的调用命令入口: import "cmd" func main() { cmd.Execute() } 最后为了编码方便,helpers.go中封装了调用外部程序错误处理函数...可以多处设置选项,按照一定的顺序取用; 使用脚手架轻松生成程序框架命令。...选项为-a指定作者,--config string指定cobra-cli自己的配置文件 -l指定license,--viper使用viper来读取配置文件。...$ go run . --config==config/cfg.yaml 配置文件就成功载入了,现在你就可以用viper需要的地方读取配置了。...全局选项子命令自己使用的选项。 cobra-cli 自动创建项目,自动创建配置文件读取项目,自动增加子命令,自动增加嵌套子命令。

27410

使用 Cobra 创建 CLI 应用

Cobra 是一个功能强大的现代化 CLI 应用程序库,有很多知名的 Go 项目使用 Cobra 进行构建,比如:Kubernetes、Docker、Hugo 等等 概念 Cobra 是构建在命令、参数标识符之上的...initConfig 该函数主要用于 home 目录下面设置一个名为 .my-calc 的配置文件,如果该文件存在则会使用这个配置文件。...= "" { // 使用 flag 标志传递的配置文件 viper.SetConfigFile(cfgFile) } else { // 获取...这个默认值是非常重要的,意思就是即使没有命令行调用 flag 标识符,该标识符的值就将为 false。.../course/my-calc 上面一样会在 root 目录下面新增一个名为 even.go 的文件,修改该文件的 init 函数,将 rootCmd 修改为 addCmd,因为我们是为 addCmd

1.4K21

Go通过cobra快速构建命令行应用

来自jetbrains Go 语言现状调查报告 显示:go开发者中使用go开发实用小程序的比例为31%仅次于web,go得益于跨平台、无依赖的特性,用来编写命令行或系统管理这类小程序非常不错。...cobra基础使用 ---- 安装cobra二进制工具cobra-cli,cobra-cli可以帮助我们快速创建出一个cobra基础代码结构。...接下来我们结构体添加Args用于验证(限制)参数数量,init()函数添加Flag -o用于保存下载的文件地址,并通过 MarkFlagRequired约束flag的参数必须输入,最后Run调用...简单的应用从命令行直接写入参数是很常见的,但是如果比较复杂的命令行应用参数需要非常多,再这样操作不太合理,cobra作者还写了另一个go很流行的包viper用于解析配置文件,比如kubectl 的yml...通过 -h查看帮助: 参数个数错误: 需要flag -o: 正确使用: xpower 子命令ping: xpower 子命令wget: ---- 以上我们通过gocobra包实现xpower

42810

go-admin在线开发平台学习-3

本章节主要的内容是对go-admin的一些有趣编码进行分析,为自己以后提供一些借鉴 使用cli方式启动项目 使用cobra[眼镜蛇]完成强壮cli的工具,确保稳定。...使用cli的方式启动项目的好处显而易见,可以进行配置的自定义化,而不是固定的使用某个配置文件的信息。一些需要频繁更换命令参数的场景下尤为有效。...cobra使用有一个默认的规定,即新建一个cmd文件夹,基于这个文件夹定义自己的命令结构 1、小型项目 cmd 文件夹 -- root.go 根命令 -- version.go 版本命令【子命令】...Viper使用 viper使用配置文件路径,获取viper根类 //数据库配置 cfgDatabase = viper.Sub("settings.database") DatabaseConfig...文件夹定义实体类,对应config.yml的分类 举例:application.go对应图二的application分类内容,其他的也是同样意思 此目录下的内容,package包名为config

67711

go命令行库-cobra

可选与viper无缝集成,用于 12 要素应用程序(viper是作者的另一个项目,用来给go语言程序提供配置解决方案,可以将cobraviper结合使用Cobra安装 cobra提供了用于go get...mycmd目录下执行下面的命令。 cobra-cli init 执行该命令会在当前目录下生成cmd目录,main.go等文件。现在尝试运行一下自动生成的命令行程序。...go run main.go 确保可以成功运行即可 修改自动生成的程序为你自己的功能 使用cobra-cli生成以后,目录结构如下所示。...由于我们自动生成的时候,没有使用-l(–license)参数,因此自动生成的LICENSE文件为空。main.go文件cmd目录下的root.go才是我们关心的重点。...error 使用标志 由于标志是不同的位置定义使用的,我们需要在外部定义一个具有正确范围的变量来分配标志以使用

74120

Go: 常用工具库cobra的简介与实践

简介 来自jetbrains Go 语言现状调查报告 显示:go开发者中使用go开发实用小程序的比例为31%仅次于web,go得益于跨平台、无依赖的特性,用来编写命令行或系统管理这类小程序非常不错。...cobra用于许多GO项目,如Kubernetes,HugoGithub Cli,以命名几个。此列表包含使用cobra的项目列表。...接下来我们结构体添加Args用于验证(限制)参数数量,init()函数添加Flag -o用于保存下载的文件地址,并通过MarkFlagRequired约束flag的参数必须输入,最后Run调用...作者还写了另一个go很流行的包viper用于解析配置文件,比如kubectl 的yml,以及各种json 前面也说过可以无缝衔接,只需Bind一下即可。...通过-h查看帮助: 参数个数错误: 需要flag-o: 正确使用:xpower 子命令ping: xpower 子命令wget: 小结 以上我们通过gocobra包实现

18210

Viper: 灵活的Go配置

大家好,我是你的Go开发技术博主。今天我们将一起探讨一个Go社区非常热门的库——Viper。在任何大型的应用,无论是前端还是后端,配置都是必不可少的一部分。...Go,我们有一个强大的库可以帮助我们处理配置,那就是ViperViper是GitHub上spf13开发的一个项目,它提供了一种简单的方式来管理存储应用程序的配置。...("db.host")) 在这个例子,我们首先设置了配置文件的路径。...这种情况可能在你从网络上接收到配置信息或者在你的代码中直接定义一些默认配置时出现。 Viper,我们可以使用viper.ReadConfig函数,该函数接受一个io.Reader。...其中一些项目包括:Hugo,一个用于构建网站的静态网站生成器;Cobra,一个用于构建现代Go CLI交互的命令行库;Viper,一个用于Go应用程序的配置库;

45720

Go语言微服务框架 - 2.实现加载静态配置文件

关键技术点 命令行参数与配置文件的差异 github.com/spf13/viper的介绍 使用viper库的推荐方式 目录构造 github.com/spf13/viper存在一个全局变量var v...*Viper(点击查看),如果我们调用默认viper包,其实就是将参数解析到这个全局变量。.../demo --config=a.yaml --http_port=8080 --grpc_port=8081,Go语言中自带flag包可供解析,开源的有pflag相关的扩展工具,如cobra。...,如配置文件的路径 配置文件:维护绝大多数的参数 某些极端的场景,比如提供一个纯二进制文件作为工具,那不得不把所有配置参数都放入到命令行参数。...所以,我不太建议配置文件这里引入监听文件变化的特性。 核心代码示例 main.go 从flag解析出配置文件路径,传到config包中用于解析。

1.2K10

Go几种读取配置文件的方式

= "" { // SetConfigFile 显式定义配置文件的路径、名称扩展名。 // Viper使用它而不检查任何配置路径。...= "" { // SetConfigFile 显式定义配置文件的路径、名称扩展名。 // Viper使用它而不检查任何配置路径。...配置文件 viper可以配合pflag来使用,pflag可以理解为标准库flag的一个增强版,viper可以绑定到pflag上 cobraviper一样,pflag也是同一作者的作品 ---- 验证一下...= "" { // SetConfigFile 显式定义配置文件的路径、名称扩展名。 // Viper使用它而不检查任何配置路径。...= "" { // SetConfigFile 显式定义配置文件的路径、名称扩展名。 // Viper使用它而不检查任何配置路径

48920

GoViper

Viper默认任何配置搜索路径,将默认决策留给应用程序; 下面是一个如何使用Viper搜索读取配置文件的示例。..."$HOME/.appname") // 多次调用以添加多个搜索路径 viper.AddConfigPath(".") // 还可以工作目录查找配置 err := viper.ReadInConfig...对于位于用户$HOME目录配置文件没有任何扩展名,如.bashrc; 当你使用如下方式读取配置时,viper会从./conf目录下查找任何以config为文件名的配置文件,如果同时存在....具体来说,Viper支持Cobra库中使用的Pflag; 与BindEnv类似,该值不是调用绑定方法时设置的,而是访问该方法时设置的。...在上面的所有示例,它们都以其单例风格的方法演示了如何使用viper使用多个viper实例 你还可以应用程序创建许多不同的viper实例。每个都有自己独特的一组配置值。

6.3K101

Golang 语言怎么使用 Viper 管理配置信息?

Viper 可以搜索多个路径,但是当前单个 Viper 实例仅支持单个配置文件。Viper 不会默认使用任何配置搜索路径,而会将默认决定留给应用程序。...下面是如何使用 Viper 搜索读取配置文件的示例。不需要任何特定路径,但至少需要提供一个配置文件的预期路径(见代码 3-5 行)。...如果您想要使用 - 或者其它符号 Get() 调用,但希望环境变量使用 _ 分隔符,这非常有用。使用它的示例可以 viper_test.go 中找到。...具体来说,viper 支持 Cobra 库中使用的 Pflags。 与 BindEnv 一样,调用绑定方法时,不会设置该值,而是访问绑定方法时设置该值。...06 使用 Viper 读取配置文件的模拟示例 模拟示例的项目目录: . ├── configs │ └── config.yaml ├── go.mod ├── go.sum └── main.go

6.3K40

Go每日一库之6:viper

")) } 我们使用之前Go 每日一库之 go-ini一文中使用配置,不过改为 toml 格式。...: ", viper.AllSettings()) } 我们配置文件 config.toml 添加protocolsports配置: [server] protocols = ["http", "...设置键值 viper 支持多个地方设置,使用下面的顺序依次读取: 调用Set显示设置的; 命令行选项; 环境变量; 配置文件; 默认值。...还可以通过viper.SetEnvPrefix方法设置环境变量前缀,这样一来,通过AutomaticEnv一个参数的BindEnv绑定的环境变量, 使用Get的时候,viper 会自动加上这个前缀再从环境变量查找...默认值 在上面的快速使用一节,我们已经看到了如何设置默认值,这里就不赘述了。 读取配置 从io.Reader读取 viper 支持从io.Reader读取配置

25730
领券