TOML配置文件
Toml是一种易读、mini语言,由github前CEO,Tom创建。Tom's Obvious, Minimal Language。
TOML致力于配置文件的小型化和易读性。wiki:https://github.com/toml-lang/toml/wiki,官网:https://github.com/toml-lang/toml,go语言解析:https://github.com/BurntSushi/toml。
与其他格式比较
TOML与用于应用程序配置和数据序列化的其他文件格式(如YAML和JSON)具有相同的特性。TOML和JSON都很简单,并且使用普遍存在的数据类型,这使得它们易于编写代码或使用机器进行解析。TOML和YAML都强调人的可读性,比如注释,它使理解给定行的目的变得更容易。TOML的不同之处在于,它支持注释(不像JSON),但保持了简单性(不像YAML)。
由于TOML被显式地设计为一种配置文件格式,所以解析它很容易,但并不打算序列化任意的数据结构。TOML的文件顶层是一个哈希表,它很容易在键中嵌套数据,但是它不允许顶级数组或浮点数,所以它不能直接序列化一些数据。也没有标准来标识TOML文件的开始或结束,这会使通过流发送文件变得复杂。这些细节必须在应用层进行协商。
INI文件经常与TOML进行比较,因为它们在语法和用作配置文件方面具有相似性。然而,INI没有标准化的格式,它们不能优雅地处理超过一两个层次的嵌套。
基础语法
# This is a TOML document. title = "TOML Example" [owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # First class dates [database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true [servers] # Indentation (tabs and/or spaces) is allowed but not required
[servers.alpha]
ip = "10.0.0.1"
dc = "eqdc10" [servers.beta]
ip = "10.0.0.2"
dc = "eqdc10" [clients]
data = [ ["gamma", "delta"], [1, 2] ] # Line breaks are OK when inside arrays
hosts = [
"alpha",
"omega"
]
大小写敏感,必须是UTF-8编码
注释:#
空白符:tab(0x09)或space(0x20)
换行符:LF(0x0A)或CRLF(0x0D 0x0A)
键值对:同一行,无值的键不可用,每行只能保存一个键值对
TOML主要结构是键值对,与json类似。值必须是如下类型:String, Integer, Float, Boolean, Datetime, Array, or Inline Table。
keys
推荐裸字符,可以包含引号和点号,如"127.0.0.1"="value"
String
TOML中有4种字符串表示方法:基本、多行-基本、字面量、多行-字面量
基本字符串
由双引号包裹,所有Unicode字符均可出现,除了双引号、反斜线、控制字符(U+0000 to U+001F)需要转义。
多行-基本字符串
由三个双引号包裹,除了分隔符开始的换行外,字符串内的换行将被保留
str1 = """
Roses are red
Violets are blue"""
字面量字符串
由单引号包裹,其内不允许转义,因此可以方便的表示基本字符串中需要转义的内容
winpath = 'C:\Users\nodejs\templates'
多行-字面量字符串
与多行-基本字符串相似
str1 = '''
Roses are red
Violets are blue'''
数值与BOOL值
int1 = +99
flt3 = -0.01
bool1 = true
日期时间
date1 = 1979-05-27T07:32:00Z
数组
数组使用方括号包裹。空格会被忽略,包括换行符。元素使用逗号分隔。
arr1 = [ 1, 2, 3 ]
arr2 = [ "red", "yellow", "green" ]
arr3 = [ [ 1, 2 ], [3, 4, 5] ]
表格
表格也称为哈希表或字典,用来存储键值对。表格名由方括号包裹,且自成一行。
[dog]
onekey = onevalue [dog.tater]
type = "pug"
TOML配置Go处理
参考:Golang学习--TOML配置处理 或 https://studygolang.com/articles/12032?fr=sidebar
TOML配置文件的更多相关文章
- Go学习笔记一:解析toml配置文件
本文系作者原创,转载请注明出处https://www.cnblogs.com/sonofelice/p/9085291.html . 一些mysql或者日志路径的信息需要放在配置文件中.那么本博文主要 ...
- Golang学习--TOML配置处理
上一篇文章中我们学会了使用包管理工具,这样我们就可以很方便的使用包管理工具来管理我们依赖的包. 配置工具的选择 但我们又遇到了一个问题,一个项目通常是有很多配置的,比如PHP的php.ini文件.Ng ...
- Heka 的配置文件加载逻辑
Heka 使用的是 TOML 格式的配置文件, 有关 golang 加载 TOML 配置文件的技术请参看: http://www.cnblogs.com/ghj1976/p/4082323.html ...
- golang常用库:配置文件解析库-viper使用
一.viper简介 viper 配置解析库,是由大神 Steve Francia 开发,他在google领导着 golang 的产品开发,他也是 gohugo.io 的创始人之一,命令行解析库 cob ...
- 总结traefik 在k8s 环境中的配置文件
总结traefik 在k8s 环境中的配置文件 traefik.toml配置文件引用 [www@localhost traefik-ingress]$ more * :::::::::::::: co ...
- CloneZilla + Parkomat 实现网络备份
I. 准备 1. 下载 & 烧录 CloneZilla Live 前往 http://clonezilla.org/downloads.php 下载CloneZilla Live,有四个版本, ...
- 以太坊客户端Geth命令用法-参数详解
Geth在以太坊智能合约开发中最常用的工具(必备开发工具),一个多用途的命令行工具. 熟悉Geth可以让我们有更好的效率,大家可收藏起来作为Geth命令用法手册. 本文主要是对geth help的翻译 ...
- Go语言打造以太坊智能合约测试框架(level3)
传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了 ...
- Go语言打造以太坊智能合约测试框架(level2)
传送门: 柏链项目学院 第二课 智能合约自动化编译 前期内容回顾 之前我们的介绍的是如何通过solc编译智能合约,并且调用智能合约,本节我们继续实践,将智能合约的代码自动化编译以及abi文件生成搞定. ...
随机推荐
- SecureCRT-登录unix/linux服务器主机的软件
百度百科说辞: SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件. SecureCRT支持SSH,同时支持Te ...
- 解决vue项目在ie浏览器缓存问题。
ie浏览器一直是程序员的噩梦.项目在谷歌浏览器上完美运行.在ie浏览器上,缓存问题真心恶心.后台查看了资料说在接口上加上时间戳或随机数就行了.要是这样干,工作量真心大啊.后来我对我们公司大神封装的ax ...
- 【springcloud】Transaction rolled back because it has been marked as rollback-only
问题: 一个ajax请求,发生系统错误,错误内容:Transaction rolled back because it has been marked as rollback-only 原因是调用的s ...
- 错误: 找不到或无法加载主类 java操作hbase出错
用java操作hbase 利用maven引入hbase包后发现无法启动程序,然后网上说是包的冲突. 我引入了下面三个包然后程序就不能运行了. <dependency> <groupI ...
- scrollview的优化
针对一次加载很多格子的scrollview的优化,第一次只加载可视区域的格子,其他的用空物体占位,在每次滑动时检测需要实例化的格子,通过对象池重用第一次的格子.可以根据每行格子的数量只检测每行的第一个 ...
- 【剑指offer】删除链表中重复的结点
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针.例如,链表1->2->3->3->4->4->5 处理后为 ...
- Docker下打包FastDFS镜像以及上传遇到的问题
官方地址:https://github.com/happyfish100/fastdfs 一.先下载个包,然后解压(自己找个目录下载即可) [root@localhost soft]# wget ht ...
- LeetCode 5274. Number of Ways to Stay in the Same Place After Some Steps - Java - DP
题目链接:5274. 停在原地的方案数 You have a pointer at index 0 in an array of size arrLen. At each step, you can ...
- ubuntu查看软件安装位置
ubuntu中的软件可通过图形界面的软件中心安装,也可以通过命令行apt-get install安装.但是安装后的软件在哪个位置呢?这点跟windows环境下安装软件的路径选择不一样.ubuntu中可 ...
- Spark之RDD弹性特性
RDD作为弹性分布式数据集,它的弹性具体体现在以下七个方面. 1.自动进行内存和磁盘数据存储的切换 Spark会优先把数据放到内存中,如果内存实在放不下,会放到磁盘里面,不但能计算内存放下的数据,也能 ...