使用go写了一个简单ini解析器

打算用golang练下手,做个几百行代码的小项目

项目前的准备

ini的基本格式

INI文件由节、键、值组成。  

节 
    [section]  

参数(键=值) 
    name=value

注解 
    注解使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。

项目开发

项目目标

0 读取简单的ini 配置,不支持复杂的模式
1 读取ini配置文件
2 创建ini,并把ini配置写入文件

项目设计

1 确定数据结构,
    k-v
    注释,
2 读取整个文件
3 解析section
4 解析键值对
5 获取键值对数据,对类型进行转换
6 创建对应的键值对

功能细化

1 确认ini的结构
2 读取ini文件,解析ini
3 返回ini数据
3.1 删除或者修改section的数据
4 删除或者修改ini的数据
5 创建一个ini
6 新增一个值

todo
和其他解析器比较,优化和改进。

使用模块

package main

import (
    "fmt"
    "github.com/beckbikang/ini_config/config"
)

func main() {
    t_iniconfig()
}

func t_iniconfig() {
    cf, err := config.ParserConfig("./config_file/simple.conf", false)
    if err != nil {
        fmt.Println("get config faild")
        return
    }
    //获取配置
    fmt.Println(cf.GetConfig("global", "error_log"))
    fmt.Println(cf.GetConfig("global", "log_level"))
    fmt.Println(cf.GetConfig("global", "emergency_restart_threshold"))
    fmt.Println(cf.GetConfig("global", "emergency_restart_interval"))
    fmt.Println(cf.GetConfig("global", "process_control_timeout"))
    fmt.Println(cf.GetConfig("global", "daemonize"))

    //获取注释
    fmt.Println(cf.GetConfigComment("global"))
    fmt.Println(cf.GetConfigCommentData("global", "error_log"))

    //将配置写入到新的文件
    config.SaveConfigToFile(cf, "./config_file/simple_bak.conf")

    cf, err = config.ParserConfig("./config_file/simple_bak.conf", false)
    if err != nil {
        fmt.Println("get config faild")
        return
    }

    fmt.Println(cf.GetConfig("global", "error_log"))
    fmt.Println(cf.GetConfig("global", "log_level"))
    fmt.Println(cf.GetConfig("global", "emergency_restart_threshold"))
    fmt.Println(cf.GetConfig("global", "emergency_restart_interval"))
    fmt.Println(cf.GetConfig("global", "process_control_timeout"))
    fmt.Println(cf.GetConfig("global", "daemonize"))

}

代码地址

https://github.com/beckbikang/ini_config

猜你喜欢

转载自blog.csdn.net/cabing2005/article/details/78510856
今日推荐