Go新项目-配置文件的选取及区别和写法(1)

在这里插入图片描述

先说结论:我们选型TOML

yaml,toml,json,ini 实际业务都有用

实际栗子是:我们想要把Go的切片作为配置文件,YAML写起来比较吃力,TOML就很容易了。

配置文件是用于配置计算机程序的参数、初始化设置的文件、业务数据公共配置等。如果没有这些配置,我们的程序就会硬编码,不够灵活

配置文件的作用主要是给即将运行的程序提供初始值,凡是在环境发生改变时需要修改的选项就可以设置成配置项。

配置文件流行分为这几类

  • TOML 结合了 INI 和 YAML 的优点

    • TOML 的写法和 ini 几乎一致,切换成本为 0 ;
    • 支持所有的 YAML 数据类型,甚至支持时间格式;
    • 支持像 ini 的 section 分组,只是在 TOML 中,它叫做 table;
    • 解析像 YAML 那样简单。
    • 支持bool、int、float、字符串、字符串数组
  • YAML (缩进怪)

    • 容易阅读和修改,支持注释。
    • 支持丰富的数据类型,对象、数组、纯量
      • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
      • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
      • 纯量(scalars):单个的、不可再分的值;字符串、bool、int、float、Null、时间、日期
    • 不同格式的明确表达。
    • 强制缩进。虽然不规定具体缩进几个空格,但是同一级的内容要保持相同的缩进。
    • 冒号后面一定要加空格,否则无法解析。
  • INI

    • 比较适合配置项的数据类型只是简单的字符串、数字的情况,如果涉及数组和 key/value 的嵌套,会比较吃力。
    • section 无法嵌套, 嵌套后的效果和没有嵌套是一样的。
    • 字符串的表示不要加引号,否则引号也会被解析出来。
  • JSON

    • 不支持注释
    • 花括号多,影响可读性
  • XML

    • 业务不常用

什么要的配置文件格式是好格式

  • 容易阅读和修改、最好支持注释。 所以 json 不是一种好的格式。
  • 易于解析,支持多数据类型。 INI 和 xml 不合适。
  • 不同格式用不同的表达。 YAML 和 TOML 做得非常好。

针对各自的使用做示例和对比

TOML

参考地址:github:https://github.com/toml-lang/toml
中文:https://github.com/LongTengDao/TOML/blob/龙腾道-译/toml-v1.0.0.md

# 例子
[analysis]# 全基因分析whole_genome = ["WGS", "childWGS", "WGS-HD"]
YAML

github:https://github.com/go-yaml/yaml

# 例子
# 项目根目录
root: "/mnt/project/bap"# cors allow address
allow_origins:- "http://127.0.0.1:8080"# 批量计算及多重样本写结论并发数
analysis:multiple_analysis: 50multiple_write: 30full_exon: 5whole_genome: 5将yaml配置内容解析到map对象中如果不定义struct进行Unmarshal,可以直接声明一个map对象:resultMap := make(map[string]interface{}),代替struct 结构体来进行解析。
INI
# 例子
; A comment line
[Section]
enabled = true
path = /usr/local # another comment
JSON
# 例子
{"enabled": true,"path": "/usr/local"
}
XML
# 例子
<?xml version="1.0" encoding="UTF-8" ?>
<Config><enabled>true</enabled><path>/usr/local</path>
</Config>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/629146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件操作一(非常重要)

文件操作一&#xff08;非常重要&#xff09; 一、为什么使用文件&#xff1f;二、什么是文件&#xff1f;三、文件名(简单理解)四、二进制文件和文本文件&#xff08;重要&#xff09;五、流的概念&#xff08;非常重要&#xff09;六、文件的打开和关闭七、文件的顺序读写函数…

HarmonyOS应用开发者初级认证试题库(鸿蒙)

目录 考试链接&#xff1a; 流程&#xff1a; 选择&#xff1a; 判断&#xff1a; 单选&#xff1a; 多选&#xff1a; 考试链接&#xff1a; 开发者能力认证-职业认证-鸿蒙能力认证-华为开发者学堂 (huawei.com)https://developer.huawei.com/consumer/cn/training/dev-…

芯品荟 | 电脑机箱键盘副屏市场调研报告

一.产品简介 1.带TFT彩屏电脑机箱 2.带小TFT彩屏电脑键盘 为什么电脑机箱&键盘&#xff0c;要带屏&#xff1f; 带屏的电脑机箱&键盘客户群体? 电竞玩家、设计师、电子发烧友、股民...... 二、市场规模 中国电脑机箱年产量约6000万台&#xff0c;键盘年产量约3亿…

从零开始搭建ubuntu 16.04 pwndocker环境

1.安装VMware-tools 1.1遇到问题 在使用 VMware Workstation时遇到了VMware Tools不能安装的问题&#xff0c;具体表现为&#xff1a;在要安装VMware Tools的虚拟机上右键 ----》安装VMware Tools(T)… 为灰色&#xff0c;不能够点击。 1.2解决方案    1. 关闭虚拟机&…

DWM1000 中断与STM32外部中断

DWM1000 中断与STM32外部中断 概述 DWM1000 本身有很多中断控制&#xff0c;例如发送完成中断&#xff0c;接收完成中断等等&#xff0c; 可以通过IRQ(GPIO8) 送到外部控制器。 DWM1000 IRQ pin可以挂到STM32 的外部中断上。 例如当接收到数据帧后&#xff0c;DWM1000 拉IRQ&…

3.goLand基础语法

目录 概述语法for常量与变量数组切片 slice切片问题问题1问题2 Make 和 New结构体和指针结构体标签 结束 概述 从 java 转来学 go &#xff0c;在此记录&#xff0c;方便以后翻阅。 语法 for package mainimport "fmt"func main() {for i : 0; i < 3; i {fmt.…

深度学习记录--偏差/方差(bias/variance)

误差问题 拟合神经网络函数过程中会出现两种误差&#xff1a;偏差(bias)和方差(variance) 偏差和误差的区别 欠拟合(underfitting) 当偏差(bias)过大时&#xff0c;如左图&#xff0c;拟合图像存在部分不符合值&#xff0c;称为欠拟合(underfitting) 过拟合(overfitting) …

系统的可观察性是指什么?

系统的可观察性是指什么&#xff1f; 本文转自 公众号 ByteByteGo&#xff0c;如有侵权&#xff0c;请联系&#xff0c;立即删除 系统的可观察性是系统设计的重要一环。不可观察的系统无法度量、无法监控、无法改进。 日志、追踪和度量是系统可观测性的三大支柱。 下图显示了…

链表练习 Leetcode234.回文链表

题目传送门&#xff1a;Leetcode234 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true示例 2&…

语聚AI集成抖音丨集简云助力北京自由引擎无缝连接AI大模型,为企业提供即时专业支持

客户介绍 北京自由引擎有限公司作为一家快速发展的初创企业&#xff0c;公司以“创业斯基”为主要运营账号&#xff0c;致力于为B2B用户提供AI营销服务。北京自由引擎迅速崭露头角&#xff0c;成为业内瞩目的新星。核心业务包括提供课程和企业服务&#xff0c;尤其专注于使用A…

基于WebSocket双向通信技术实现-下单提醒和催单(后端)

学习复盘和总结项目亮点。 扩展&#xff1a;该功能能应用在&#xff0c;各种服务类项目中。&#xff08;例如&#xff1a;酒店、洗脚城等系ERP系中提醒类服务&#xff09; 4. 来单提醒 4.1 需求分析和设计 用户下单并且支付成功后&#xff0c;需要第一时间通知外卖商家。通…

C++ 程序文档生成器(doxygen)使用说明

程序文档&#xff0c;是每个程序员必看文档&#xff0c;在日常业务开发中&#xff0c;难免会封装一些组件。没有很好的组件文档&#xff0c;再好的组件都是废物&#xff0c;。因此大型业务中&#xff0c;文档和思维导图&#xff0c;两个都是必备&#xff01; 一、注释风格 …

Google上架:2024年一月政策限制之用户生成的内容

为确保 Google Play 用户能够获得安全、值得信赖的使用体验&#xff0c;Google会定期更新开发者计划政策。今天就来讲解一下关于一月新政策《用户生成的内容》。 目录 公布日期&#xff1a;2023-10-25内容公告相关博客截止时间2024-1-31 公布日期&#xff1a;2023-10-25 内容…

【Java】源码文件开头添加注释

需求 应公司质量部要求&#xff0c;需要对代码做静态检查。质量部要求&#xff0c;源码文件必须在起始行起设置一些注释&#xff0c;然而项目已经开发了一年之久&#xff0c;且没有维护这个注释。 此时&#xff0c;面对好几千个源码文件&#xff0c;我们如何快速添加相应的注…

HTML--基本结构构成

基本结构&#xff1a; 文档声明: <!DOCTYPE html> htm标签对 :<html> </html> head标签对&#xff1a; <head> </head> body标签对&#xff1a;<body> </body> 如下结构&#xff1a; <html> <head> <title>这是一…

Vue-22、总结Vue数据监测

1、功能 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Vue总结数据监测</title><script type"text/javascript" src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.js"…

FFmpeg之SWScale

文章目录 一、概述二、函数调用结构图三、Libswscale处理数据流程四、重要结构体4.1、SwsContext4.2、SwsFilter 五、重要函数5.1、sws_getContext5.1.1、sws_alloc_context5.1.2、sws_init_context 5.2、sws_scale5.2.1、SwsContext中的swscale()5.2.2、check_image_pointers5…

电脑技巧:BitLocker是啥,有啥用,看完本文你就懂了

目录 一、 介绍 二、BitLocker用途 三、 工作原理 四、 配置和管理 五、安全性和适用性 六、总结 一、 介绍 BitLocker是由微软开发的全磁盘加密工具&#xff0c;它旨在保护计算机上的数据免受未经授权的访问或窃取。BitLocker通过对整个磁盘进行加密&#xff0c;可以在计…

1、机器学习模型的工作方式

第一步,如果你是机器学习新手。 本课程所需数据集夸克网盘下载链接:https://pan.quark.cn/s/9b4e9a1246b2 提取码:uDzP 文章目录 1、简介2、决策树优化3、继续1、简介 我们将从机器学习模型如何工作以及如何使用它们的概述开始。如果你以前做过统计建模或机器学习,这可能感…

DDOS攻击,一篇文章给你讲清!

1、互联网安全现状 随着网络世界的高速发展&#xff0c;各行业数字化转型也在如火如荼的进行。但由于TCP/IP网络底层的安全性缺陷&#xff0c;钓鱼网站、木马程序、DDoS攻击等层出不穷的恶意攻击和高危漏洞正随时入侵企业的网络&#xff0c;如何保障网络安全成为网络建设中的刚…