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)] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

魔都看展丨闯入达利的梦境,让想象力爆棚的马儿带你奔赴新程

马年将至,来老市府大楼看看想象力爆棚的马——达利的《背负时间的马》。这幢百年建筑正在举办国际艺术大展“达利×老市府:启程”,精选呈现达利共计72组、155件作品,涵盖雕塑、版画、珠宝、琉璃、影像、金饰、家具…

魔都看展丨闯入达利的梦境,让想象力爆棚的马儿带你奔赴新程

『昆凌』『周杰伦』一同亮相澳网,两人甜蜜恩爱(『昆凌』和『周杰伦』的mv)

她穿着一件白色短上衣,腰线若隐若现,而旁边坐着的一位中年男球迷,看到这一幕下意识地把手中的啤酒藏到了背后——那纤细的腰身,显得那么惹眼,仿佛在无声地告诉大家:我生了三个孩子,也一点不显老。时间公平地把他们磨平…

『昆凌』『周杰伦』一同亮相澳网,两人甜蜜恩爱(『昆凌』和『周杰伦』的mv)

『沈梦辰』带婆婆追星殷秀梅!被蔡国庆拥抱略显尴尬,『那英』热情喊阿姨(『沈梦辰』 gai)

就在同一天,『沈梦辰』兴奋地发布了一段视频,晒出了自己与殷秀梅的亲密接触。 『沈梦辰』赶紧走上前,带着温暖的笑容问候殷秀梅,并指着涛妈说:这是我婆婆,她超级喜欢您,看到您真的太激动了,哭了。在这种微妙的氛围…

『沈梦辰』带婆婆追星殷秀梅!被蔡国庆拥抱略显尴尬,『那英』热情喊阿姨(『沈梦辰』 gai)

材料世界的话语密码:当科学遇见专利翻译(从材料中看世界)

数年前,一种新型热电转换材料的专利在从日文翻译成英文时,由于对“熱電特性”这一关键参数的理解偏差,导致国际同行在重复实验时始终无法达到原专利声称的性能指标。 这个案例提醒我们,材料科学专利翻译绝非简单的语言转…

材料世界的话语密码:当科学遇见专利翻译(从材料中看世界)

英国进口的10A、11A刀片和开胶模刀片,哪些适合我?聊聊进口手术刀片的选择难题(英国进口的菲牛蛭最简单鉴别方法)

近年来,越来越多的专业人士青睐英国原装进口的10A、11A手术刀片及开胶模刀片,这些高端工具以其出色的耐用性和锋利度广受好评。但选择时往往困惑于如何挑选最适合自己使用场景的产品。本文深入解读各类刀片特点,助您选得称手工具。

英国进口的10A、11A刀片和开胶模刀片,哪些适合我?聊聊进口手术刀片的选择难题(英国进口的菲牛蛭最简单鉴别方法)