视频软件App开发引领数字内容创作与分享的新时代
736
2022-09-08
Go语言从入门到规范-6.9、Go处理yml和ini文件
Go语言从入门到规范-6.9、Go处理yml和ini文件
文章目录
Go语言从入门到规范-6.9、Go处理yml和ini文件
1. 前言2. ini概念
2.1 概述2.2 格式2.3 示例
3. Go语言处理ini文件
1. 前言
一般yml和ini都是作为配置文件来使用的,但是实际上它们都是一种新的语言,主要是方便序列化数据便于我们进行互联网数据传输而创建的,虽然它们没有json和xml那么频繁的使用,但是也是有很多使用场景的,之前我们已经对yml做了简单介绍:
接下来我们再对ini做学习和总结。
2. ini概念
2.1 概述
INI文件是一种无固定标准格式的配置文件。它以简单的文字与简单的结构组成,常常使用在Windows操作系统上,许多程序也会采用INI文件做为配置文件之用。Windows操作系统后来以注册表的形式取代掉INI档。INI文件的命名来源,是取自英文“初始(Initial)”的首字缩写,正与它的用途——初始化程序相应。有时候,INI文件也会以不同的扩展名,如“.CFG”、“.CONF”、或是“.TXT”代替。
目前还有很多程序和软件使用ini文件进行初始化以及作为一些配置文件来使用。
2.2 格式
节:section
参数:键=值 name=value
注解:注解使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。
2.3 示例
; last modified 1 April 2001 by John Doe[owner]name=John Doeorganization=Acme Products[database]server=192.0.2.42 ; use IP address in case network name resolution is not workingport=143file="acme payroll.dat"
比如mysql数据我们就可以借助ini文件对其进行一些配置。
3. Go语言处理ini文件
gopkg.in/ini.v1
使用说明:
possible values : production, developmentapp_mode = development[paths]# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)data = /home/git/grafana[server]# Protocol (or = The port to use= 9999# Redirect to correct domain if host header does not match domain# Prevents DNS rebinding attacksenforce_domain = true
很好,接下来我们需要编写 main.go 文件来操作刚才创建的配置文件。
package mainimport ( "fmt" "os" "gopkg.in/ini.v1")func main() { cfg, err := ini.Load("my.ini") if err != nil { fmt.Printf("Fail to read file: %v", err) os.Exit(1) } // 典型读取操作,默认分区可以使用空字符串表示 fmt.Println("App Mode:", cfg.Section("").Key("app_mode").String()) fmt.Println("Data Path:", cfg.Section("paths").Key("data").String()) // 我们可以做一些候选值限制的操作 fmt.Println("Server Protocol:", cfg.Section("server").Key("protocol").In("[]string{"" // 如果读取的值不在候选列表内,则会回退使用提供的默认值 fmt.Println("Email Protocol:", cfg.Section("server").Key("protocol").In("smtp", []string{"imap", "smtp"})) // 试一试自动类型转换 fmt.Printf("Port Number: (%[1]T) %[1]d\n", cfg.Section("server").Key(" fmt.Printf("Enforce Domain: (%[1]T) %[1]v\n", cfg.Section("server").Key("enforce_domain").MustBool(false)) // 差不多了,修改某个值然后进行保存 cfg.Section("").Key("app_mode").SetValue("production") cfg.SaveTo("my.ini.local")}
结果:
App Mode: developmentData Path: /home/git/grafanaServer Protocol: Protocol: smtpPort Number: (int) 9999Enforce Domain: (bool) true
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~