打算用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