当前位置: 首页 > 编程笔记 >

golang 使用 viper 读取自定义配置文件

经炜
2023-03-14
本文向大家介绍golang 使用 viper 读取自定义配置文件,包括了golang 使用 viper 读取自定义配置文件的使用技巧和注意事项,需要的朋友参考一下

viper 支持 Yaml、Json、 TOML、HCL 等格式,读取非常的方便。

viper 官网有案例:https://github.com/spf13/viper

go get github.com/spf13/viper

创建 config.yaml 文件

database:
 driver: mysql
 host: 127.0.0.1
 port: 3306
 username: blog
 dbname: blog
 password: 123456

建一个 config.go 用于初始化配置文件

func InitConfig() {
  path, err := os.Getwd()
  if err != nil {
    panic(err)
  }
  viper.AddConfigPath(path + "/config/dev")
  viper.SetConfigName("config")
  viper.SetConfigType("yaml")
  if err := viper.ReadInConfig(); err != nil {
    panic(err)
  }
}

简单使用:

  username := viper.GetString("database.username")
  password := viper.GetString("database.password")
  host := viper.GetString("database.host")
  port := viper.GetInt("database.port")
  dbname := viper.GetString("database.dbname")
  dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local",username,password,host, port, dbname)
  GormPool, err = gorm.Open("mysql", dsn)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 我正在从这里使用出色的毒蛇库:https : //github.com/spf13/viper 我正在尝试读取hcl中的配置文件(尽管它也可能是JSOn或YAML文件),如下所示: 到目前为止,我的代码如下: 我遇到的最大问题是使用group选项。这可以是多个不同的组。 当我在使用中阅读它时,它似乎不起作用,所以我使用了标准函数。转储时,结果结构如下所示: 我使用反射时似乎是切片类型。

  • 我是阿帕奇光束的新手。我有一个要求读一个文本文件的格式如下所示 在这里,直到一个空行的所有行都是一条记录的一部分,需要一起处理(例如,作为列插入到表中)。上面的示例对应于一个只有2条记录的文件。我正在使用ReadFromText读取文件并对其进行处理。它将每一行作为一个元素读取。然后我尝试循环和处理,直到得到空行。

  • 因此,我们有一个普通的批处理应用程序,我们决定移植到dropwizard。我们希望使用dropwizard获得许多现成的好处,如运行状况检查、指标等。 稍后我们可能会添加一些REST管理endpoint,但现在我们只是使用DropWizard托管服务在单独的线程中启动应用程序。我们创建了一个示例配置yml文件,但它基本上只是一个框架。 这种移植主要是提升和移位,我们希望避免在代码中进行大量重构。该

  • 我试图配置SUTime注释器(“ner”的一部分),以使用我自己的日期/时间规则文件,而不是Stanford CoreNLP模型的分发JAR中位于“models/SUTime/”中的开箱即用的规则文件。 我这样做的原因是,我想稍微修改SUTime规则正在执行的操作。 根据官方的SUTime文档,所需要的只是以逗号分隔的文件路径的形式指定“SUTime.rules”属性。 但是在我这样做之后,Cor

  • MOSN 自定义配置说明。 本文是对 MOSN 自定义配置的说明。 Duration String 字符串,由一个十进制数字和一个时间单位后缀组成,有效的时间单位为 ns、us(或?s)、ms、s、m、h,例如 1h、3s、500ms。 metadata metadata 用于 MOSN 路由和 Cluster Host 之间的匹配。 { "filter_metadata":{ "mo

  • 如果你想自定义 Next.js 的高级配置,可以在根目录下新建next.config.js文件(与pages/ 和 package.json一起) 注意:next.config.js是一个 Node.js 模块,不是一个 JSON 文件,可以用于 Next 启动服务已经构建阶段,但是不作用于浏览器端。 // next.config.js module.exports = { /* config