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

Go:使用Viper和YAML管理配置文件

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

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

    我篡改了系统命令惊现事故,竟要扣我年终奖-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 自动创建项目,自动创建配置文件读取项目,自动增加子命令,自动增加嵌套子命令。

    30610

    使用 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

    Viper,一个Go语言配置管理神器!

    在现代软件开发中,良好的配置管理可以极大地提升应用的灵活性和可维护性。在 Go 语言中,Viper 是一个功能强大且广泛使用的配置管理库,它支持从多个来源读取配置,包括文件、环境变量、远程配置中心等。...轻松集成:可以与其他 Go 库和框架(如 Cobra)无缝集成。...你也可以使用 viper.SetConfigName("config_demo") 配合 viper.AddConfigPath(".") 来指定配置文件的目录和名称。...解析到结构体:通过 viper.Unmarshal(&c) 将配置解析到自定义的结构体中,使代码更加易于维护和使用。...总结通过本文的示例,我们可以看到 Viper 在 Go 应用中配置管理方面的强大功能。无论是从本地文件读取配置,还是从远程配置中心获取配置,Viper 都能够提供一个简洁且灵活的解决方案。

    8610

    Go之现代命令行框架Cobra

    概念Cobra 是建立在命令、参数和标志这三个结构之上的。要使用 Cobra 编写一个命令行程序,需要明确这三个概念。命令(COMMAND):命令表示要执行的操作。...Use: "hugo":指定了该命令的使用方法,这里是hugo,这意味着用户在命令行中输入 hugo 时会触发这个命令。...the needed filesto quickly create a Cobra application.初始化的时候可能会出现cobra-cli init 命令不存在报错,可以通过配置环境变量或者使用绝对路径来解决...可选标志cobra-cli 提供了如下三个标志分别用来设置项目的作者、许可证类型、是否使用 Viper 管理配置。...*/如果你不想把配置保存在 ~/.cobra.yaml 中,cobra-cli 还提供了 --config 标志来指定任意目录下的配置文件。到这里,常用功能就总结的差不多了。

    21810

    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: ---- 以上我们通过go中cobra包实现xpower

    49010

    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

    71411

    go命令行库-cobra

    可选与viper无缝集成,用于 12 要素应用程序(viper是作者的另一个项目,用来给go语言程序提供配置解决方案,可以将cobra和viper结合使用) 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 使用标志 由于标志是在不同的位置定义和使用的,我们需要在外部定义一个具有正确范围的变量来分配标志以使用。

    90620

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

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

    56510

    Viper: 灵活的Go配置库

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

    65320

    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.3K10

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

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

    76020

    Go之Viper

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

    6.4K101
    领券