golang读取各种配置文件(ini、json、yaml)
作者:FootMark.run 发布时间:2024-05-09 14:51:49
标签:golang,读取,配置文件
日常项目中,读取各种配置文件是避免不了的,这里介绍一个能读取多种配置文件的库,viper
viper读取ini文件
config := viper.New()
config.AddConfigPath("./conf/") // 文件所在目录
config.SetConfigName("b") // 文件名
config.SetConfigType("ini") // 文件类型
if err := config.ReadInConfig(); err != nil {
if _, ok := err.(viper.ConfigFileNotFoundError); ok {
fmt.Println("找不到配置文件..")
} else {
fmt.Println("配置文件出错..")
}
}
host := config.GetString("redis.host") // 读取配置
fmt.Println("viper load ini: ", host)
b.ini文件如下
[mysql]
username='root'
password='123456'
[redis]
host='127.0.0.1'
poet=3306
[mongodb]
user='admin'
password='admin'
viper读取json文件
config := viper.New()
config.AddConfigPath("./conf/")
config.SetConfigName("c")
config.SetConfigType("json")
if err := config.ReadInConfig(); err != nil {
if _, ok := err.(viper.ConfigFileNotFoundError); ok {
fmt.Println("找不到配置文件..")
} else {
fmt.Println("配置文件出错..")
}
}
version := config.GetString("version")
origin := config.GetString("host.origin")
fmt.Println(version)
fmt.Println(origin)
// 读取到map中
host := config.GetStringMapString("host")
fmt.Println(host)
fmt.Println(host["origin"])
fmt.Println(host["port"])
allSettings := config.AllSettings()
fmt.Println(allSettings)
c.json文件如下
{
"version": "2.0",
"secret": "footmark",
"host": {
"origin": "http://www.baidu.com",
"port": 8080
}
}
viper读取yaml文件
config := viper.New()
config.AddConfigPath("./conf/")
config.SetConfigName("a")
config.SetConfigType("yaml")
if err := config.ReadInConfig(); err != nil {
if _, ok := err.(viper.ConfigFileNotFoundError); ok {
fmt.Println("找不到配置文件..")
} else {
fmt.Println("配置文件出错..")
}
}
host := config.GetString("database.host")
fmt.Println("viper load yml: ", host)
allSettings := config.AllSettings()
fmt.Println(allSettings)
a.yaml文件如下
database:
host: 127.0.0.1
user: root
dbname: test
pwd: 123456
viper常用方法
// viper 常用读取配置的方法
Get(key string) : interface{}
GetBool(key string) : bool
GetFloat64(key string) : float64
GetInt(key string) : int
GetIntSlice(key string) : []int
GetString(key string) : string
GetStringMap(key string) : map[string]interface{}
GetStringMapString(key string) : map[string]string
GetStringSlice(key string) : []string
GetTime(key string) : time.Time
GetDuration(key string) : time.Duration
IsSet(key string) : bool
AllSettings() : map[string]interface{}
来源:https://blog.csdn.net/qq_36034503/article/details/124024889
0
投稿
猜你喜欢
- 前言最近有人在吐槽项目使用 Vue3 之后,出现一堆问题,填坑困难,甚至是开发中才发现某些第三方库没有推出 Vue3 的版本,因此大发吐槽,
- 1、页签的表达。页签表达很清晰,当前页签突出,且层级包涵关系明确;看下图,一目了然的感觉,不用疑惑我在那部分里。不信?拿当当的对比一下,你感
- GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利
- 如何用ASP获知机器的网络配置?看看我们的例子:Option Explicit Dim WSHShell&nb
- 实验原理模拟电脑通过串口与Arduino开发板通信,并通过网页实现简单交互开发环境1、Windows102、Python3.103、Prot
- 环境配置系统:Windows10版本:python 3.8Turtle扫盲1.绘图窗体的设置turtle.setup(width, heig
- php对数字进行万。亿的转化/** * 格式化数字 */public function float_number($number){ &nb
- 英文原文:http://www.myinkblog.com/2009/03/21/4-principles-of-good-design-f
- lambda 语法lambda 函数的语法只包含一个语句,表现形式如下:lambda [arg1 [,arg2,.....argn]]:ex
- 编辑 my.cnf或者my.ini文件,去除下面这几行代码的注释: log_slow_queries = /var/log/mysql/my
- 开发网站,往往需要用数据库保存数据。我们该如何创建数据库与创建数据表呢?方法其实很简单,下面就由小编教你如何用Navicat for MyS
- 年月日三下拉框联动,代码比较简洁<html><head><title>年月日三下拉框联动 - www.a
- 由于课题的原因,笔者主要通过 Pytorch 框架进行深度学习相关的学习和实验。在运行和学习网络上的 Pytorch 应用代码的过程中,不少
- 一、什么是super1.super也是一个类,是的。他不是一个方法也不是一个内置的关键字。class A: pas
- 导入pandas模块:import pandas as pd使用import读入pandas模块,并且为了方便使用其缩写pd指代。读入待处理
- 函数名:chk_Email()'返回值:布尔值(True为通过,False为未通过)'参数:email(需要判断的email
- 一、IE透明度问题在IE的高度超过某一阀值时,会产生透明度不时失效的问题,这现象比较奇怪,(会有的时候全黑,有的时候全白)你有可能无法复现。
- 一、前言在多进程中,每个进程之间是什么关系呢?其实每个进程都有自己的地址空间、内存、数据栈以及其他记录其运行状态的辅助数据。下面通过一个例子
- 如下所示:# coding = GBKa =[1,2,3,4,5]sum=0b = len(a)print("这个数组的长度为:&
- 在开发过程中,很多时候我们有分割字符串的需求,即把一个字符串按照某种分割符进行切割。在 Go 语言中,分割字符串我们可以分为几种情况,分别为