前言
INI 是 Windows 上常用的配置文件格式。如果你使用 INI 作为系统的配置文件,那么一定会使用这个库吧。它就是号称地表 最强大、最方便 和 最流行 的 Go 语言 INI 文件操作库。配置文件形式为[section] 的段构成, 内部使用 name=value键值对 。go-ini是 Go 语言中用于操作 ini 文件的第三方库。本文介绍go-ini库的使用。
INI官方
该项目的作者也是很多 Go 语言爱好者熟悉的无闻大师。讲真,文档都写的很好,很用心。
官方网站:https://ini.unknwon.io/
功能特性
支持覆盖加载多个数据源
安装下载
go-ini 是第三方库,使用前需要安装,最低要求安装 Go 语言版本为 1.6。安装时切换到root用户,否则会报错(permission denied)。
安装:
go
则http://gopkg.in会出现在src目录下:
也可以使用 GitHub 上的仓库:
go
开始使用
我们将通过一个非常简单的例子来了解如何使用。首先,我们需要在src目录下,任意创建两个文件(my.ini 和 main.go)。
首先,创建一个my.ini配置文件:
app_name
在 ini 文件中,每个键值对占用一行,中间使用=隔开。以#开头的内容为注释。ini 文件是以分区(section)组织的。在下一个分区前结束。所有分区前的内容属于默认分区,如my.ini文件中的app_name和log_level。
接下来我们需要编写 main.go 文件来操作刚才创建的my.ini配置文件。
package
编译输出:
从上面的信息,配置文件中存储的都是字符串,所以类型为字符串的配置项不会出现类型转换失败的,故String()方法只返回一个值。
但如果类型为Int/Uint/Float64这些时,转换可能失败。
使用go-ini读取配置文件的步骤如下:
1
分区操作
在加载配置之后,可以通过Sections方法获取所有分区,SectionStrings()方法获取所有分区名。例如:
package
编译输出:
package
编译输出:
保存配置
有时候,我们需要将生成的配置写到文件中。例如在写工具的时候。保存有两种类型的接口,一种直接保存到文件,另一种写入到io.Writer中:
下面我们通过程序生成前面使用的配置文件my.ini并保存:
package
编译输出:
my-pretty.ini
下面来看看分区与结构体字段映射的使用。
分区与结构体字段映射
我们将通过一个非常简单的例子来了解分区与结构体字段映射如何使用。例如:
package
编译输出:
MapTo内部使用了反射,所以结构体字段必须都是导出的。如果键名与字段名不相同,那么需要在结构标签中指定对应的键名。
结构体生成配置
package
编译输出:
总结
go-ini 是 Go 语言中用于操作 ini 文件的第三方库。go-ini还有很多高级特性。官方文档非常详细,推荐去看一看。
参考:go-ini 官方文档
go-ini GitHub 仓库https://studygolang.com/articles/26135