程序包开发,读取 ini 配置文件

程序包开发,读取 ini 配置文件

任务目标

  1. 熟悉程序包的编写习惯(idioms)和风格(convetions)
  2. 熟悉 io 库操作
  3. 使用测试驱动的方法
  4. 简单 Go 程使用
  5. 事件通知

github地址

传送门

设计说明

获取包

使用命令 go get github.com/hupf3/ServiceComputing_hw/hw_readini/readini

读取配置文件

我们首先需要读取 .ini 文件,读取的函数我都放在了 read.go 文件中

  • 全局变量:flag 数据类型为 int,用于判断操作系统的类型,从而选择注释符:0 代表 ‘#’ ,1 代表 ‘;’
var flag int // 判断操作系统的类型从而决定注释符 0 : '#'  1 : ';'
  • 结构体:config 用来存储配置文件的相关信息,包含了 filePath,代表配置文件的路径,info 用了二维 map 来存储 section,key,value 的信息
// 存储配置文件的相关信息
type config struct {
   
	filePath string                       // 配置文件路径
	info     map[string]map[string]string // 二维map存储 section,key,value 的关系
}
  • init 函数:由于老师要求在 init 函数中判断操作系统的类型,所以我在里面实现了该要求(由于我的电脑是 macbook,所以操作系统为 darwin,所以我将操作系统为 darwin 的,flag 也设置为0)
// 先于 main 函数运行,用来判断操作系统
func init() {
   
	if runtime.GOOS == "unix" || runtime.GOOS == "darwin" {
   
		flag = 0
	} else if runtime.GOOS == "windows" {
   
		flag = 1
	}
	fmt.Println("The current operating system is " + runtime.GOOS)
	if flag == 1 {
   
		fmt.Println("Use ; as the annotation character")
	} else if flag == 0 {
   
		fmt.Println("Use # as the annotation character")
	}
}
  • readini 函数:该函数用于读取配置文件中的内容,该函数是结构体定义的方法,传入了 *config 参数,传入了指针,可以方便修改。返回了 error 变量,用来判断文件是否存在,或者在读取时是否有误。信息的读取是通过二维 map 和相关的 string 操作,具体的过程代码中的注释部分也有说明(值得一提的是,如果配置信息没有section 的相关信息,而是直接出现 key = value 的形式,此时将section设置成固定的值:“emptySection”)
func (c *config) readini() error {
   
	// 打开文件
	file, err := os.Open(c.filePath)

	// 文件打开失败
	if err != nil {
   
		err = errors.New("Open file failed!")
		fmt.Println("Error:", err)
		return err
	}

	// 在函数调用后关闭文件
	defer file.Close()

	// 读取配置文件的内容
	reader := bufio.NewReader(file)

	var section, key, value string              // 配置文件的信息
	var note string                             // 注释符号
	c.info = make(map[string]map[string]string) // 初始化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值