golang配置文件解析器之goconfig框架的使用详解

 更新时间:2023年11月21日 15:26:03   作者:shura1014  
goconfig是一个易于使用,支持注释的 Go 语言配置文件解析器,该文件的书写格式和 Windows 下的 INI 文件一样,本文主要为大家介绍了goconfig框架的具体使用,需要的可以参考下

每个项目中都会有配置文件管理来管理,比如数据库的配置。

配置文件框架 一般大致思路都是加载配置文件,返回配置操作对象,该对象提供获取配置api

下面我们来使用goconfig框架来了解配置框架,它解析的是ini文件,ini文件以简单的文字和结构组成,一般windows系统比较常见,很多应用程序也会因为其简单而使用其作为配置文件

官网star目前599

安装

go get github.com/Unknwon/goconfig

配置示例

在项目下建立一个文件 conf/conf_goconfig.ini 内容如下

[mysql]
host = 127.0.0.1
port = 3306
; 用户名
user = root
# 密码
password = root
db_name : blog
max_idle : 2
max_conn : 10
[array]
course = java,go,python

配置文件由一个个的 section 组成,section 下就是key = value或者key : value 这样的格式配置

如果没有 section 会放到 DEFAULT 默认section里面

注释使用 ;开头或者#开头

下面我们就来读取配置

加载、获取section、获取单个值、获取注释、获取数组、重新设置值、删除值,重新加载文件(会写一个for循环10次去重新加载配置,这期间修改配置,观察值是否改变)

编写go代码

package main

import (
	"errors"
	"fmt"
	"github.com/Unknwon/goconfig"
	"log"
	"os"
	"time"
)

func main() {

	currentPath, _ := os.Getwd()
	confPath := currentPath + "/conf/conf_goconfig.ini"

	_, err := os.Stat(confPath)
	if err != nil {
		panic(errors.New(fmt.Sprintf("file is not found %s", confPath)))

	}

	// 加载配置
	config, err := goconfig.LoadConfigFile(confPath)
	if err != nil {
		log.Fatal("读取配置文件出错:", err)
	}

	// 获取 section
	mysqlConf, _ := config.GetSection("mysql")
	fmt.Println(mysqlConf)
	fmt.Println(mysqlConf["host"])

	// 获取单个值
	user, _ := config.GetValue("mysql", "user")
	fmt.Println(user)

	// 获取单个值并且指定类型
	maxIdle, _ := config.Int("mysql", "max_idle")
	fmt.Println(maxIdle)

	// 获取单个值,发生错误时返回默认值,没有默认值返回零值
	port := config.MustInt("mysql", "port", 3308)
	fmt.Println(port)

	// 重新设置值
	config.SetValue("mysql", "port", "3307")
	port = config.MustInt("mysql", "port", 3308)
	fmt.Println(port)

	// 删除值
	config.DeleteKey("mysql", "port")
	port = config.MustInt("mysql", "port", 3308)
	fmt.Println(port)

	// 获取注释
	comments := config.GetKeyComments("mysql", "user")
	fmt.Println(comments)

	// 获取数组,需要指定分隔符
	array := config.MustValueArray("array", "course", ",")
	fmt.Println(array)

	// 重新加载配置文件,一般对于web项目,改了配置文件希望能够即使生效而不需要重启应用,可以对外提供刷新配置api
	// 修改password 为 root123值观察值的变化
	for i := 0; i < 10; i++ {
		time.Sleep(time.Second * 3)
		_ = config.Reload()
		password, _ := config.GetValue("mysql", "password")
		fmt.Println(password)
	}
}

执行

map[db_name:blog host:127.0.0.1 max_conn:10 max_idle:2 password:root port:3306 user:root]
127.0.0.1
root
2
3306
3307
3308
; 用户名
[java go python]
root
root
root
root123
root123
root123
root123
root123
root123
root123

Process finished with the exit code 0

从结果中可以看出,正确获取到了配置文件信息,并且可以通过 Reload重新加载配置,达到热更新效果!

到此这篇关于golang配置文件解析器之goconfig框架的使用详解的文章就介绍到这了,更多相关go goconfig内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go结构体从基础到应用深度探索

    Go结构体从基础到应用深度探索

    本文深入探讨了结构体的定义、类型、字面量表示和使用方法,旨在为读者呈现Go结构体的全面视角,通过结构体,开发者可以实现更加模块化、高效的代码设计,这篇文章旨在为您提供关于结构体的深入理解,助您更好地利用Go语言的强大功能
    2023-10-10
  • 基于Golang实现内存数据库的示例详解

    基于Golang实现内存数据库的示例详解

    这篇文章主要为大家详细介绍了如何基于Golang实现内存数据库,文中的示例代码讲解详细,具有一定的借鉴价值,需要的小伙伴可以参考一下
    2023-03-03
  • Golang共享变量如何解决问题

    Golang共享变量如何解决问题

    协程之间的通信只能够通过通道。但是我们习惯于共享变量,而且很多时候使用共享变量能让代码更简洁。那么Golang共享变量如何解决问题,感兴趣的可以了解一下
    2021-12-12
  • Go语言字符串高效拼接的实现

    Go语言字符串高效拼接的实现

    这篇文章主要介绍了Go语言字符串高效拼接的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • 使用Go语言统计文件中每个字母出现频率的方法

    使用Go语言统计文件中每个字母出现频率的方法

    这篇文章主要介绍了如何使用Go语言统计文件中每个字母出现频率 的完整内容,本案例适合用来练习文件读取、字符处理、map统计等基础技能,感兴趣的小伙伴跟着小编一起来看看吧
    2025-07-07
  • golang国内proxy设置方式

    golang国内proxy设置方式

    建议使用goproxy.cn作为Go包镜像,因其速度快且缓存丰富,若遇下载问题可更换源,同时注意GitHub删除的包可能在goproxy.io中缓存
    2025-07-07
  • 一文带你了解Go语言标准库strings的常用函数和方法

    一文带你了解Go语言标准库strings的常用函数和方法

    strings 库包含了许多高效的字符串常用操作的函数和方法,巧用这些函数与方法,能极大的提高我们程序的性能。本文就来和大家分享一下Go标准库strings的常用函数和方法,希望对大家有所帮助
    2022-11-11
  • 一文搞懂Go语言中defer关键字的使用

    一文搞懂Go语言中defer关键字的使用

    defer是golang中用的比较多的一个关键字,也是go面试题里经常出现的问题。今天就来整理一下关于defer的学习使用,希望对需要的朋友有所帮助
    2022-09-09
  • Golang算法问题之整数拆分实现方法分析

    Golang算法问题之整数拆分实现方法分析

    这篇文章主要介绍了Golang算法问题之整数拆分实现方法,结合实例形式分析了Go语言数值运算与数组遍历相关操作技巧,需要的朋友可以参考下
    2017-02-02
  • go语言通过odbc访问Sql Server数据库的方法

    go语言通过odbc访问Sql Server数据库的方法

    这篇文章主要介绍了go语言通过odbc访问Sql Server数据库的方法,实例分析了Go语言通过odbc连接与查SQL Server询数据库的技巧,需要的朋友可以参考下
    2015-03-03

最新评论