返回顶部
首页 > 资讯 > 后端开发 > GO >golang怎么通过viper读取config.yaml文件
  • 586
分享到

golang怎么通过viper读取config.yaml文件

2023-06-29 13:06:51 586人浏览 薄情痞子
摘要

这篇文章主要讲解了“golang怎么通过viper读取config.yaml文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Golang怎么通过viper读取config.yaml文件”吧

这篇文章主要讲解了“golang怎么通过viper读取config.yaml文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Golang怎么通过viper读取config.yaml文件”吧!

1.导入依赖包

import (    "GitHub.com/spf13/viper")

2.编写yaml文件

放在conf目录下,文件名叫config.yaml

# TODO  本地调试时放开KubeSphere_URL: Http://192.168.103.48:3188# TODO 部署到环境时放开#KubeSphere_URL: http://ks-apiserver.kubesphere-system.svc:80KubesphereAdminUser: adminKubespherePassWord: Admin123#TODO 调用梅姐服务的ip,暂用当前,后续需要修改Other_service_IP: http://192.168.103.48:30412#Other_service_IP: http://container-cloud-system-controller-manager-metrics-service.container-cloud-system-system.svc:8093Other_service_URL: /capis/quota.ictnj.io/v1alpha1/namespaces/#TODO harbor镜像仓库地址HARBOR_URL: https://192.168.66.4:443HARBOR_ADMIN_USERNAME: adminHARBOR_ADMIN_PASSWD: Harbor12345HARBOR_IP_HTTPS: 192.168.66.4:443HARBOR_ssh_ADDRESS: 192.168.103.48:53304HARBOR_SSH_USERNAME: rootHARBOR_SSH_PASSWD: peng123.

3.编写读取yaml文件的go文件

放在config目录下,文件名叫config.go

需要注意的是目录的问题,如果放在同目录,直接用configurationPath,不同的编辑器,

vscode跟golang对相对路径处理不同

golang怎么通过viper读取config.yaml文件

package configimport (    "github.com/spf13/viper")const (    configurationName = "config"    configurationPath = "./conf"    // vscode特殊读取路径  //  configurationPath_vscode = "../conf" )var Config *viper.Viperfunc init() {    Config = viper.New()    Config.SetConfigName(configurationName)    Config.AddConfigPath(configurationPath)    Config.SetConfigType("yaml")    Config.AddConfigPath(configurationPath)    if err := config.ReadInConfig(); err != nil {     panic(err)   } }

如果config.yaml跟config.go放在同目录简单的路径用上面这个,如果路径不同,且不同的同事用不同的编译软件,可以尝试下面的路径兼容

package configimport (    "github.com/spf13/viper")const (    configurationName = "config"    configurationPath = "./conf"    // vscode特殊读取路径    configurationPath_vscode = "../conf" )var Config *viper.Viperfunc init() {    Config = viper.New()    Config.SetConfigName(configurationName)    Config.AddConfigPath(configurationPath)    Config.SetConfigType("yaml")    if err := Config.ReadInConfig(); err != nil {        Config.AddConfigPath(configurationPath_vscode)        if err := Config.ReadInConfig(); err != nil {            Config.AddConfigPath(configurationPath)            panic(err)        }    }}

4.使用config对象

golang怎么通过viper读取config.yaml文件

Config.GetString("KubeSphere_URL")

5.viper源码分析

type Viper struct {    // Delimiter that separates a list of keys    // used to access a nested value in one go    keyDelim string    // A set of paths to look for the config file in    configPaths []string    // The filesystem to read config from.    fs afero.Fs    // A set of remote providers to search for the configuration    remoteProviders []*defaultRemoteProvider    // Name of file to look for inside the path    configName        string    configFile        string    configType        string    configPermissions os.FileMode    envPrefix         string    automaticEnvApplied bool    envKeyReplacer      StringReplacer    allowEmptyEnv       bool    config         map[string]interface{}    override       map[string]interface{}    defaults       map[string]interface{}    kvstore        map[string]interface{}    pflags         map[string]FlagValue    env            map[string]string    aliases        map[string]string    typeByDefValue bool    // Store read properties on the object so that we can write back in order with comments.    // This will only be used if the configuration read is a properties file.    properties *properties.Properties    onConfiGChange func(fsnotify.Event)}
func (v *Viper) ReadInConfig() error {    jww.INFO.Println("Attempting to read in config file")    filename, err := v.getConfigFile()    if err != nil {        return err    }    if !stringInSlice(v.getConfigType(), SupportedExts) {        return UnsupportedConfigError(v.getConfigType())    }    jww.DEBUG.Println("Reading file: ", filename)    file, err := afero.ReadFile(v.fs, filename)    if err != nil {        return err    }    config := make(map[string]interface{})    err = v.unmarshalReader(bytes.NewReader(file), config)    if err != nil {        return err    }    v.config = config    return nil}

golang怎么通过viper读取config.yaml文件

把yaml文件的键值读取到viper对象的config当中

感谢各位的阅读,以上就是“golang怎么通过viper读取config.yaml文件”的内容了,经过本文的学习后,相信大家对golang怎么通过viper读取config.yaml文件这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: golang怎么通过viper读取config.yaml文件

本文链接: https://lsjlt.com/news/324939.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • golang怎么通过viper读取config.yaml文件
    这篇文章主要讲解了“golang怎么通过viper读取config.yaml文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“golang怎么通过viper读取config.yaml文件”吧...
    99+
    2023-06-29
  • golang如何通过viper读取config.yaml文件
    目录1.导入依赖包2.编写yaml文件3.编写读取yaml文件的go文件4.使用config对象5.viper源码分析1.导入依赖包 import (     "github.com...
    99+
    2024-04-02
  • java怎么通过文件流读取文件大小
    要通过文件流读取文件的大小,可以使用Java中的File类和FileInputStream类来实现。下面是一个示例代码:```jav...
    99+
    2023-09-22
    java
  • Vue怎么通过json文件读取数据
    本篇内容介绍了“Vue怎么通过json文件读取数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.准备工作1.1 webpack.dev....
    99+
    2023-07-04
  • 通过python读取ini配置文件
    ini是啥你可以理解为就是一个配置文件的统称吧。比如test.conf,这样的你可以理解为他就是ini文件,里面一般存放一些配置信息。比如数据库的基本信息,一会我们进行讲解!那么ta的好处是啥呢?就是把一些配置信息提出去来进行单独管理,如果...
    99+
    2023-01-31
    配置文件 python ini
  • golang怎么读取文件内容
    在Golang中,可以使用`io/ioutil`包中的`ReadFile`函数来读取文件内容。以下是一个简单的示例: package...
    99+
    2023-10-26
    golang
  • Vue2.5如何通过json文件读取数据
    这篇文章主要介绍了Vue2.5如何通过json文件读取数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.准备工作1.1 webpack....
    99+
    2024-04-02
  • 怎么在Golang中读取超大文件
    怎么在Golang中读取超大文件?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是golanggolang 是Google开发的一种静态强类型、编译型、并发型...
    99+
    2023-06-14
  • golang怎么读取大型日志文件
    在Go中,可以使用bufio和os包来读取大型日志文件。以下是一个示例代码,可以逐行读取大型日志文件: package main ...
    99+
    2023-10-20
    golang
  • 一文详解golang通过io包进行文件读写
    目录1.io包的读写函数2.io.ioutil包实现读写操作在 golang 语言中,实现io的读与写,只要实现了如下的读写接口即可: // go 1.19/sr...
    99+
    2023-05-17
    golang通过io包文件读写 golang io包文件读写 golang io包
  • golang怎么读取ini、json、yaml配置文件
    本文小编为大家详细介绍“golang怎么读取ini、json、yaml配置文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“golang怎么读取ini、json、yaml配置文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
    99+
    2023-06-30
  • Golang文件读取操作:快速读取大文件的技巧
    Golang文件读取操作:快速读取大文件的技巧,需要具体代码示例 在Golang程序设计中,文件读取是一个非常常见的操作。但当需要读取大文件时,通常是一件比较耗费时间和资源的操作。因此,如何快速读取大文件是一...
    99+
    2024-01-19
    大文件 Golang 文件读取
  • golang怎么读取大文件,并快速查找
    读取大文件:利用 bufio.reader 进行逐行读取,优化内存消耗。快速查找:使用 bloom 过滤器实现 o(1) 时间复杂度的概率性查找,或将文件内容哈希为键以使用哈希表进行快速...
    99+
    2024-04-21
    golang
  • java怎么读取文件?
    java中可以使用两个类来读取文件:BufferedReader和BufferedInputStream。1、使用 BufferedReader在下面的实例中,我们将看到两种使用 BufferedReader 来读取文件的方法。在这里, 我...
    99+
    2014-12-22
    java教程 java
  • html怎么读取文件
    网页无法直接读取文件,需要借助前端框架或库。常用方法包括:xmlhttprequest 对象:用于异步数据交换,可通过创建对象、打开请求、发送请求和处理响应获取文件内容。fileread...
    99+
    2024-04-05
  • Golang文件读取的方法详解:从入门到精通
    Golang文件读取的方法详解:从入门到精通 Golang是一种有着强大且高效的编程语言,被广泛应用于云计算、大数据和网络编程等领域。在这些应用场景中,文件读取是一项基本的操作。本文将介绍Golang的文件读...
    99+
    2024-01-19
    Golang 文件读取 精通
  • Python 读取 .gz 文件全过程
    目录Python 读取 .gz 文件Python 读取gz文件,字符串与字节串的相互转换Python 读取 .gz 文件 读取.gz 文件需要使用gzip 包,如果没有安装可以自行在...
    99+
    2024-04-02
  • c++怎么读取文本文件
    在C++中,可以使用ifstream类来读取文本文件。下面是一个示例代码,展示了如何读取文本文件中的内容: #include <...
    99+
    2024-02-29
    c++
  • html怎么读取文本文件
    html 本身无法直接读取文本文件,但可以通过后端编程语言(如 php、python、java)或前端 javascript 技术来实现此功能。后端方法使用 php 的 file_get...
    99+
    2024-04-02
  • golang读取文件有哪些方法
    golang读取文件的方法:1、使用os包和os.Open函数;2、使用bufio包和Scanner类型;3、使用ioutil包和ReadFile函数;4、使用os/exec包和命令行工具组合读取文件内容。详细介绍:1、使用os包和os.O...
    99+
    2023-12-14
    Golang
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作