Golang读取配置文件(*.ini)信息

本文介绍了一个使用Go语言实现的配置文件解析函数getCfg。该函数通过正则表达式从指定的配置文件中查找特定标签的配置值。文章详细解释了函数的工作原理,包括读取文件、使用正则表达式匹配配置项以及处理可能的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package main

import (
	"fmt"
	"io/ioutil"
	"regexp"
	"strings"
)

func checkErr(e error) {
	if e != nil {
		panic(e)
	}
}

/*
函数名:getCfg(tag string, cfg string)string
参  数:tag string:参数的名称
	  cfg string:配置信息字符串
返回值:string:从配置信息"cfg"中查询到的第一个tag参数的配置值
创建时间:2018年12月3日
修订信息:
*/
func getCfg(tag string, filepath string) string {
	dat, err := ioutil.ReadFile(filepath) //读取文件
	checkErr(err)                         //检查是否有错误
	cfg := string(dat)                    //将读取到达配置文件转化为字符串
	var str string
	s1 := fmt.Sprintf("[^;]%s *= *.{1,}\\n", tag)
	s2 := fmt.Sprintf("%s *= *", tag)
	reg, err := regexp.Compile(s1)
	if err == nil {
		tag_str := reg.FindString(cfg) //在配置字符串中搜索
		if len(tag_str) > 0 {
			r, _ := regexp.Compile(s2)
			i := r.FindStringIndex(tag_str) //查找配置字符串的确切起始位置
			var h_str = make([]byte, len(tag_str)-i[1])
			copy(h_str, tag_str[i[1]:])
			str1 := fmt.Sprintln(string(h_str))
			str2 := strings.Replace(str1, "\n", "", -1)
			str = strings.Replace(str2, "\r", "", -1)
		}
	}
	return str
}

func main() {
	fmt.Println(getCfg("db1.Host", "demo.ini")) //输出:127.0.0.0
}

测试对应的配置文件

[mysql]
db1.Name = testMysqlDB
db1.Host = 127.0.0.1
db1.Port = 3306
db1.User = root
db1.Pwd = test
db1.colname  = ID:int,DataTime:string,DocTagName:string,DocValue:float64
; 测试INI风格的注释
; 这两行数据的前前面加入了分号,因此,这些数据被认为是注释,将不会影响配置文件正常情况

[tcp]
Port=   3309

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值