Go

Go 解析Config 配置文件

管某 2 分钟阅读

func GetConfig() map[string]string {
// 打开文件
file, err := os.Open(“config.ini”)
if err != nil {
// 处理错误
fmt.Println(“无法打开文件:”, err)
return nil
}
defer file.Close()

// 创建一个 map 存储配置项
config := make(map[string]string)

// 读取文件的每一行
scanner := bufio.NewScanner(file)
for scanner.Scan() {
	// 解析行中的键值对
	line := strings.TrimSpace(scanner.Text())
	if len(line) == 0 || strings.HasPrefix(line, "#") {
		continue // 跳过注释和空行
	}
	parts := strings.Split(line, "=")
	if len(parts) != 2 {
		fmt.Printf("无法解析行:%q\n", line)
		continue
	}

	// 添加到 map 中
	key := strings.TrimSpace(parts[0])
	value := strings.TrimSpace(parts[1])
	config[key] = value
}

// 检查扫描过程中是否出现错误
if err := scanner.Err(); err != nil {
	fmt.Println("读取文件时发生错误:", err)
	return nil
}
return config
}

配置文件样例

# 注释会被跳过
Ip = 127.0.0.1
Port = 1234
Redis_Addr = 127.0.0.1