使用Go解析.ini配置文件格式的操作教程
更新時間:2025年07月23日 08:28:50 作者:程序員愛釣魚
使用?Go?語言解析一個?.ini?格式的配置文件,提取其中的鍵值對,并按?section?分類存儲,本文將給大家介紹如何用?Go?語言解析常見的?.ini?配置文件格式,需要的朋友可以參考下
案例目標
使用 Go 語言解析一個 .ini
格式的配置文件,提取其中的鍵值對,并按 section 分類存儲。
應用場景
- • 開發(fā)需要加載外部配置(如數(shù)據(jù)庫、服務端口等)的小工具或服務
- • 學習如何讀取和解析結(jié)構化文本
- • 簡易配置系統(tǒng)的實現(xiàn)
涉及知識點
- • 文件讀取與按行解析
- • 字符串處理:去空格、分割、前綴判斷
- •
map[string]map[string]string
多層結(jié)構 - • 處理注釋和空行
示例配置文件(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
技術說明
功能 | 用法 |
---|---|
去除空格 | strings.TrimSpace() |
判斷開頭結(jié)尾 | strings.HasPrefix(), strings.HasSuffix() |
分割鍵值對 | strings.SplitN(str, "=", 2) |
多層 map 存儲結(jié)構 | map[section]map[key]value |
小結(jié)
通過本案例,你掌握了如何讀取 .ini
配置文件并將其解析為結(jié)構化數(shù)據(jù),是很多服務啟動時加載配置的基礎實踐。
以上就是使用Go解析.ini配置文件格式的操作教程的詳細內(nèi)容,更多關于Go解析.ini文件格式的資料請關注腳本之家其它相關文章!
相關文章
Go語言如何使用golang-jwt/jwt/v4進行JWT鑒權詳解
最近項目中需要用到鑒權機制,golang中jwt可以用,這篇文章主要給大家介紹了關于Go語言如何使用golang-jwt/jwt/v4進行JWT鑒權的相關資料,需要的朋友可以參考下2022-09-09詳解如何在Go語言中循環(huán)數(shù)據(jù)結(jié)構
這篇文章主要為大家詳細介紹了如何在Go語言中循環(huán)數(shù)據(jù)結(jié)構(循環(huán)字符串、循環(huán)map結(jié)構和循環(huán)Struct),文中的示例代碼代碼講解詳細,需要的可以參考一下2022-10-10go的defer和閉包示例說明(非內(nèi)部實現(xiàn))
這篇文章主要為大家介紹了go的defer和閉包示例說明(非內(nèi)部實現(xiàn)),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08