c读取ini配置文件_超赞的 Go 语言 INI 文件操作

1a724308-012d-eb11-8da9-e4434bdf6706.png

前言

INI 是 Windows 上常用的配置文件格式。如果你使用 INI 作为系统的配置文件,那么一定会使用这个库吧。它就是号称地表 最强大、最方便 和 最流行 的 Go 语言 INI 文件操作库。配置文件形式为[section] 的段构成, 内部使用 name=value键值对 。go-ini是 Go 语言中用于操作 ini 文件的第三方库。本文介绍go-ini库的使用。

INI官方

该项目的作者也是很多 Go 语言爱好者熟悉的无闻大师。讲真,文档都写的很好,很用心。

官方网站:https://ini.unknwon.io/

ce604a8592defdf89114da5e969b6d0c.png

功能特性

支持覆盖加载多个数据源

安装下载

go-ini 是第三方库,使用前需要安装,最低要求安装 Go 语言版本为 1.6。安装时切换到root用户,否则会报错(permission denied)。

安装:

go 

则http://gopkg.in会出现在src目录下:

c7d715e18160bae895cebc2789ce8ab6.png

也可以使用 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 

编译输出:

69659293b26e7798b4b01b9883b1a6db.png

从上面的信息,配置文件中存储的都是字符串,所以类型为字符串的配置项不会出现类型转换失败的,故String()方法只返回一个值。
但如果类型为Int/Uint/Float64这些时,转换可能失败。

使用go-ini读取配置文件的步骤如下:

1

分区操作

在加载配置之后,可以通过Sections方法获取所有分区,SectionStrings()方法获取所有分区名。例如:

package 

编译输出:

6609fefdf5d47a313953dc640008c861.png
package 

编译输出:

76619afe0a9a38cd387e9a4bb4d2abf3.png

保存配置

有时候,我们需要将生成的配置写到文件中。例如在写工具的时候。保存有两种类型的接口,一种直接保存到文件,另一种写入到io.Writer中:

下面我们通过程序生成前面使用的配置文件my.ini并保存:

package 

编译输出:

f62f699318d0f9412661a9c7c56b70ec.png

my-pretty.ini

0d209b93df5e6143a51d949f4b3782ce.png

下面来看看分区与结构体字段映射的使用。

分区与结构体字段映射

我们将通过一个非常简单的例子来了解分区与结构体字段映射如何使用。例如:

package 

编译输出:

51144c6c6d97f226a82cc6deabd5c7d5.png

MapTo内部使用了反射,所以结构体字段必须都是导出的。如果键名与字段名不相同,那么需要在结构标签中指定对应的键名。

结构体生成配置

package 

编译输出:

41c07dd6631ceba9c694479cd1ceb075.png

总结

go-ini 是 Go 语言中用于操作 ini 文件的第三方库。go-ini还有很多高级特性。官方文档非常详细,推荐去看一看。

参考:go-ini 官方文档
go-ini GitHub 仓库https://studygolang.com/articles/26135

dcfbe36a3845535760d253f901f9a81d.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值