当前位置: 首页 > news >正文

YAML文件

主播最近在公司学习go相关内容,修改了一年,结果发现就是.yaml文件的缩进不对,给主播气的直接简单学习了一下这个yaml文件

简介

YAML(YAML Ain’t Markup Language)是一种人类可读的数据序列化格式,广泛用于配置文件、数据交换等场景

特点

简洁易读​:使用缩进和简单符号表示数据结构。
​跨语言支持​:支持多种编程语言(如Python、Java、Go等)。
​扩展性​:支持注释、复杂数据结构和引用。

语法规则

缩进

用空格​(非Tab)表示层级关系,同一层级必须对齐。
缩进数量通常为2或4个空格(推荐2个)。

注释

#开头 例:

# 这是一行注释
key: value  # 行内注释
键值对

使用 key: value 形式,冒号后必须加空格:

name: "Alice"
age: 30

数据类型

对象(Mapping)

表示以键值对(key: value)形式出现的数据

  • 使用“冒号+空格”来分开键与值
key: value// JSON
"key": "value"
  • 支持多层嵌套(用缩进表示层级关系)
key:child-key1: value1child-key2: value2// JSON
"key": {"child-key1": "value1","child-key2": "value2",
}
  • 支持流式风格( Flow style)的语法(用花括号包裹,用逗号加空格分隔,类似 JSON)
key: { child-key1: value1, child-key2: value2 }// JSON
"key": { "child-key1": "value1", "child-key2": "value2" }
  • 使用问号“?”声明一个复杂对象,允许你使用多个词汇(数组)来组成键
?- keypart1- keypart2
:- value1- value2
数组(Sequence)
  • 一组以区块格式(Block Format)(即“破折号+空格”)开头的数据组成一个数组
values:- value1- value2- value3// JSON
"values": [ "value1", "value2", "value3" ]
  • 同时也支持内联格式(Inline Format)来表达(用方括号包裹,逗号加空格分隔,类似 JSON)
values: [value1, value2, value3]// JSON
"values": [ "value1", "value2", "value3" ]
  • 支持多维数组(用缩进表示层级关系)
values:-- value1- value2-- value3- value4// JSON
"values": [ [ "value1", "value2"], ["value3", "value4"] ]
标量(Scalars)

表示 YAML 中最基本的数据类型

字符串(String)

字符串一般不需要用引号包裹,但是如果字符串中使用了反斜杠“\”开头的转义字符就必须使用引号包裹

strings:- Hello without quote # 不用引号包裹- Helloworld # 拆成多行后会自动在中间添加空格- 'Hello with single quotes' # 单引号包裹- "Hello with double quotes" # 双引号包裹- "I am fine. \u263A" # 使用双引号包裹时支持 Unicode 编码- "\x0d\x0a is \r\n" # 使用双引号包裹时还支持 Hex 编码- 'He said: "Hello!"' # 单双引号支持嵌套"// JSON
"strings":[ "Hello without quote","Hello world","Hello with single quotes","Hello with double quotes","I am fine. ☺","\r\n is \r\n","He said: 'Hello!'" ]

对于多行的文字,YAML 提供了两种特殊的语法支持

  • 保留换行(Newlines preserved)

  • 使用竖线符“ | ”来表示该语法,每行的缩进和行尾空白都会被去掉,而额外的缩进会被保留

lines: |我是第一行我是第二行我是吴彦祖我是第四行我是第五行// JSON
"lines": "我是第一行\n我是第二行\n  我是吴彦祖\n     我是第四行\n我是第五行"
  • 折叠换行(Newlines folded)

使用右尖括号“ > ”来表示该语法,只有空白行才会被识别为换行,原来的换行符都会被转换成空格

lines: >我是第一行我也是第一行我仍是第一行我依旧是第一行我是第二行这么巧我也是第二行// JSON
"lines": "我是第一行 我也是第一行 我仍是第一行 我依旧是第一行\n我是第二行 这么巧我也是第二行"
布尔值(Boolean)

“true”、“True”、“TRUE”、“yes”、“Yes”和“YES”皆为真
“false”、“False”、“FALSE”、“no”、“No”和“NO”皆为假

boolean:- true # True、TRUE- yes # Yes、YES- false # False、FALSE- no # No、NO// JSON
"boolean": [ true, true, false, false ]
整数(Integer)

支持二进制表示

int:- 666- 0001_0000 # 二进制表示// JSON
"int": [ 666, 4096 ]
浮点数(Floating Point)

支持科学计数法

float:- 3.14- 6.8523015e+5 # 使用科学计数法// JSON
"float": [ 3.14, 685230.15 ]
空(Null)

“null”、“Null”和“~”都是空,不指定值默认也是空

nulls:- null- Null- ~-// JSON
"nulls": [ null, null, null, null ]
时间戳(Timestamp)

YAML 也支持 ISO 8601 格式的时间数据
这里使用 JavaScript 对象进行对比

date1: 2020-05-26
date2: 2020-05-26T01:00:00+08:00
dete3: 2020-05-26T02:00:00.10+08:00
date4: 2020-05-26 03:00:00.10 +8// JavaScript
date1: Tue May 26 2020 08:00:00 GMT+0800 (中国标准时间),
date2: Tue May 26 2020 01:00:00 GMT+0800 (中国标准时间),
dete3: Tue May 26 2020 02:00:00 GMT+0800 (中国标准时间),
date4: Tue May 26 2020 03:00:00 GMT+0800 (中国标准时间)

类型转换

YAML 支持使用严格类型标签“!!”(双感叹号+目标类型)来强制转换类型

a: !!float '666' # !! 为严格类型标签
b: '666' # 其实双引号也算是类型转换符
c: !!str 666 # 整数转为字符串
d: !!str 666.66 # 浮点数转为字符串
e: !!str true # 布尔值转为字符串
f: !!str yes # 布尔值转为字符串// JSON
"a": 666,
"b": "666",
"c": "666",
"d": "666.66",
"e": "true"
"f": "yes"

相关文章:

  • NLP学习路线图(二十):FastText
  • Python Pytest
  • Read View在MVCC里如何工作
  • 第二章 2.TCP IP Protocol Suite(CCNA)
  • 使用cmd命令行创建数据库和表-简单步骤记录
  • 【Zephyr 系列 6】使用 Zephyr + BLE 打造蓝牙广播与连接系统(STEVAL-IDB011V1 实战)
  • 北京通用人工智能研究院-通才智能体 LEO
  • 【Pandas】pandas DataFrame rename_axis
  • 记录被mybatis一级缓存坑的问题
  • electron-vite_18桌面共享
  • Web3如何重塑数据隐私的未来
  • LeetCode[404]左叶子之和
  • 机器学习——主成分分析(PCA)
  • Axure设计案例:滑动拼图解锁
  • 项目计划未与实际情况同步更新,如何保持计划的实时性?
  • UniRig:如何在矩池云一站式解决 3D 模型绑定难题
  • Linux随记(十八)
  • 【产品研究】安克创新公司产品研究
  • idea不识别lombok---实体类报没有getter方法
  • 实现脚本引擎技术详解
  • bootstrap单页网站/seo方法图片
  • 安顺 网站建设/今日国际军事新闻头条
  • 深圳市顺建建设工程有限公司网站/搜索引擎优化简历
  • 番禺做网站设计/常见的网站推广方式有哪些
  • 怎么引导做淘宝的客户做官方网站/百度搜索竞价
  • 网站在线制作平台/新媒体运营怎么自学