使用Go解析.ini配置文件格式的操作教程
更新時間:2025年07月23日 08:28:50 作者:程序員愛釣魚
使用?Go?語言解析一個?.ini?格式的配置文件,提取其中的鍵值對,并按?section?分類存儲,本文將給大家介紹如何用?Go?語言解析常見的?.ini?配置文件格式,需要的朋友可以參考下
案例目標
使用 Go 語言解析一個 .ini 格式的配置文件,提取其中的鍵值對,并按 section 分類存儲。
應(yīng)用場景
- • 開發(fā)需要加載外部配置(如數(shù)據(jù)庫、服務(wù)端口等)的小工具或服務(wù)
- • 學(xué)習(xí)如何讀取和解析結(jié)構(gòu)化文本
- • 簡易配置系統(tǒng)的實現(xiàn)
涉及知識點
- • 文件讀取與按行解析
- • 字符串處理:去空格、分割、前綴判斷
- •
map[string]map[string]string多層結(jié)構(gòu) - • 處理注釋和空行
示例配置文件(config.ini)
# 系統(tǒng)配置 [server] host = 127.0.0.1 port = 8080 [database] user = root password = 123456 dbname = testdb
示例代碼:簡單 INI 文件解析器
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func parseINI(filePath string) (map[string]map[string]string, error) {
config := make(map[string]map[string]string)
var currentSection string
file, err := os.Open(filePath)
if err != nil {
return nil, err
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := strings.TrimSpace(scanner.Text())
// 忽略注釋和空行
if line == "" || strings.HasPrefix(line, "#") || strings.HasPrefix(line, ";") {
continue
}
// 處理 section
if strings.HasPrefix(line, "[") && strings.HasSuffix(line, "]") {
currentSection = strings.TrimSpace(line[1 : len(line)-1])
config[currentSection] = make(map[string]string)
} else {
// 處理 key=value
parts := strings.SplitN(line, "=", 2)
if len(parts) == 2 && currentSection != "" {
key := strings.TrimSpace(parts[0])
value := strings.TrimSpace(parts[1])
config[currentSection][key] = value
}
}
}
if err := scanner.Err(); err != nil {
return nil, err
}
return config, nil
}
func main() {
iniPath := "config.ini"
config, err := parseINI(iniPath)
if err != nil {
fmt.Println("解析失敗:", err)
return
}
// 打印解析結(jié)果
for section, kv := range config {
fmt.Println("[" + section + "]")
for key, value := range kv {
fmt.Printf("%s = %s\n", key, value)
}
fmt.Println()
}
}
執(zhí)行輸出示例
[server] host = 127.0.0.1 port = 8080 [database] user = root password = 123456 dbname = testdb
技術(shù)說明
| 功能 | 用法 |
|---|---|
| 去除空格 | strings.TrimSpace() |
| 判斷開頭結(jié)尾 | strings.HasPrefix(), strings.HasSuffix() |
| 分割鍵值對 | strings.SplitN(str, "=", 2) |
| 多層 map 存儲結(jié)構(gòu) | map[section]map[key]value |
小結(jié)
通過本案例,你掌握了如何讀取 .ini 配置文件并將其解析為結(jié)構(gòu)化數(shù)據(jù),是很多服務(wù)啟動時加載配置的基礎(chǔ)實踐。
以上就是使用Go解析.ini配置文件格式的操作教程的詳細內(nèi)容,更多關(guān)于Go解析.ini文件格式的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Go用兩個協(xié)程交替打印100以內(nèi)的奇偶數(shù)的方法詳解
這篇文章主要給大家詳細介紹了Go用兩個協(xié)程交替打印100以內(nèi)的奇偶數(shù)的示例代碼,文中給大家介紹了兩個實現(xiàn)方法,使用無緩沖的channel和設(shè)置GOMAXPROCS=1,介紹的非常詳細,需要的朋友可以參考下2023-08-08
go語言開發(fā)環(huán)境安裝及第一個go程序(推薦)
這篇文章主要介紹了go語言開發(fā)環(huán)境安裝及第一個go程序,這篇通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02
golang中l(wèi)og包自定義輸出日志格式與寫入到文件
這篇文章主要給大家介紹了關(guān)于golang中l(wèi)og包自定義輸出日志格式與寫入到文件的相關(guān)資料,日志輸出在任何項目中都極其重要,是有助于后續(xù)我們排查解決程序BUG,需要的朋友可以參考下2023-06-06

