Go语言实战案例-简单配置文件(INI格式)解析器(go 语言 gui)

以下是《Go语言100个实战案例》中的文件与IO操作篇 - 案例20:简单配置文件(INI格式)解析器的完整内容,适合入门学习如何用 Go 语言解析常见的 .ini 配置文件格式。

🎯 案例目标

使用 Go 语言解析一个 .ini 格式的配置文件,提取其中的键值对,并按 section 分类存储。

🧩 应用场景

  • • 开发需要加载外部配置(如数据库、服务端口等)的小工具或服务
  • • 学习如何读取和解析结构化文本
  • • 简易配置系统的实现

🧠 涉及知识点

  • • 文件读取与按行解析
  • • 字符串处理:去空格、分割、前缀判断
  • • map[string]map[string]string 多层结构
  • • 处理注释和空行

🗂️ 示例配置文件(config.ini)# 系统配置[server]host = 127.0.0.1port = 8080[database]user = rootpassword = 123456dbname = testdb

💻 示例代码:简单 INI 文件解析器packagemainimport("bufio""fmt""os""strings")funcparseINI(filePathstring) (map[string]map[string]string,error) { config :=make(map[string]map[string]string)varcurrentSectionstringfile, err := os.Open(filePath)iferr !=nil{returnnil, err }deferfile.Close scanner := bufio.NewScanner(file)forscanner.Scan { line := strings.TrimSpace(scanner.Text)// 忽略注释和空行ifline ==""|| strings.HasPrefix(line,"#") || strings.HasPrefix(line,";") {continue}// 处理 sectionifstrings.HasPrefix(line,"[") && strings.HasSuffix(line,"]") { currentSection = strings.TrimSpace(line[1:len(line)-1]) config[currentSection] =make(map[string]string) }else{// 处理 key=valueparts := strings.SplitN(line,"=",2)iflen(parts) ==2&& currentSection !=""{ key := strings.TrimSpace(parts[0]) value := strings.TrimSpace(parts[1]) config[currentSection][key] = value } } }iferr := scanner.Err; err !=nil{returnnil, err }returnconfig,nil}funcmain { iniPath :="config.ini"config, err := parseINI(iniPath)iferr !=nil{ fmt.Println("解析失败:", err)return}// 打印解析结果forsection, kv :=rangeconfig { fmt.Println("["+ section +"]")forkey, value :=rangekv { fmt.Printf("%s = %s\n", key, value) } fmt.Println }}

📤 执行输出示例[server]host = 127.0.0.1port = 8080[database]user = rootpassword = 123456dbname = testdb

🛠 技术说明

  • 功能
  • 用法
  • 去除空格strings.TrimSpace
  • 判断开头结尾strings.HasPrefix, strings.HasSuffix
  • 分割键值对strings.SplitN(str, "=", 2)
  • 多层 map 存储结构map[section]map[key]value

🧪 拓展练习

  • • 支持注释中 # 和 ; 的双重格式
  • • 支持值为数字、布尔值的自动识别与转换
  • • 将解析结果导出为 JSON 文件
  • • 写一个配置查询函数:传入 section 和 key,返回 value

✅ 小结

通过本案例,你掌握了如何读取 .ini 配置文件并将其解析为结构化数据,是很多服务启动时加载配置的基础实践。

特别声明:[Go语言实战案例-简单配置文件(INI格式)解析器(go 语言 gui)] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

豪掷8000万日元💴用于竞选宣传?日本民众:已不再信任高市早苗(8000万日元💴折合人民币)

近日,日本招聘网站“云工作”上出现了一些引发争议的招聘信息。这些信息要求制作所谓的“日本称赞系”和“中国批判系”视频,包括虚构中国人制造麻烦、缺乏道德的内容。剧本创作报酬为1500至5000日元💴,剪辑报酬为2000至7000日元💴

豪掷8000万日元💴用于竞选宣传?日本民众:已不再信任高市早苗(8000万日元💴折合人民币)

珠宝首饰拍摄打光技巧:白底图与模特图的光影艺术(珠宝首饰拍摄技巧)

2. 人像与珠宝的光平衡 环境光融合:若在室内场景拍摄,可利用窗光或暖色氛围灯,营造自然生活感。 案例参考:高端品牌常采用低饱和度背景+冷调主光突出铂金钻石的清冷气质;而黄金或彩宝则搭配暖光,强化温暖与贵…

珠宝首饰拍摄打光技巧:白底图与模特图的光影艺术(珠宝首饰拍摄技巧)

70岁潘虹近况吓人,走路颤巍神情呆滞,40年离婚真相太唏嘘(潘虹 近况)

但潘虹却不想过那种生活,那些在农场的艰苦岁月已经教会她,只有自己才是最可靠的依靠。但潘虹却没有犹豫,她毫不拖延地选择了事业,而不是回家。她自己也曾坦言,米家山是她的最爱,但这并不意味着她后悔离婚。 …

70岁潘虹近况吓人,走路颤巍神情呆滞,40年离婚真相太唏嘘(潘虹 近况)

李泽楷被她迷得神魂颠倒,林丹为她不顾妻儿,她究竟有什么魅力?(李泽楷eos)

但即便如此,为什么这两位男人最终都没有能够让赵雅淇如愿以偿,反而将自己推向了舆论的风口浪尖? 与同期演员将精力集中在演技和剧本上不同,赵雅淇把大部分时间花在了建立人脉和关系上,忽略了作品说话这一『娱乐圈』️最根…

李泽楷被她迷得神魂颠倒,林丹为她不顾妻儿,她究竟有什么魅力?(李泽楷eos)

『迪奥』活动生图合集:『景甜』医美痕迹明显,尹正姨味十足邓为很帅气(『迪奥』的活动)

昨夜,『迪奥』的星光殿堂大门敞开,一场视觉盛宴就此启幕。无数『明星』️艺人如银河倾泻般汇聚于此,红毯之上,每一帧都是精雕细琢的画卷。让我们屏息凝神,一同细赏这些未经修饰的生图,感受最真实的星光魅力。…

『迪奥』活动生图合集:『景甜』医美痕迹明显,尹正姨味十足邓为很帅气(『迪奥』的活动)