Golang 入门系列(九) 如何读取YAML,JSON,INI等配置文件

Go实战--go语言中使用YAML配置文件 与json xml ini对比 阅读详情

实际项目中,读取相关的系统配置文件是很常见的事情。今天就来说一说,Golang 是如何读取YAML,JSON,INI等配置文件的。

 

1. json使用

JSON 应该比较熟悉,它是一种轻量级的数据交换格式。层次结构简洁清晰 ,易于阅读和编写,同时也易于机器解析和生成。

  1. 创建 conf.json:

{
"enabled": true,
"path": "/usr/local"
}

 

  2. 新建config_json.go:

package main

import (
    "encoding/json"
    "fmt"
    "os"
)

type configuration struct {
    Enabled bool
    Path    string
}

func main() {
    // 打开文件
    file, _ := os.Open("conf.json")

    // 关闭文件
    defer file.Close()

    //NewDecoder创建一个从file读取并解码json对象的*Decoder,解码器有自己的缓冲,并可能超前读取部分json数据。
    decoder := json.NewDecoder(file)

    conf := configuration{}
    //Decode从输入流读取下一个json编码值并保存在v指向的值里
    err := decoder.Decode(&conf)
    if err != nil {
        fmt.Println("Error:", err)
    }
    fmt.Println("path:" + conf.Path)
}

 

  启动运行后,输出如下:

D:\Go_Path\go\src\configmgr>go run config_json.go
path:/usr/local

 

2. ini的使用

INI文件格式是某些平台或软件上的配置文件的非正式标准,由节(section)和键(key)构成,比较常用于微软Windows操作系统中。这种配置文件的文件扩展名为INI。

  1. 创建 conf.ini:

[Section]
enabled = true
path = /usr/local # another comment

  2.下载第三方库:go get gopkg.in/gcfg.v1

  3. 新建 config_ini.go:

package main

import (
    "fmt"
    gcfg "gopkg.in/gcfg.v1"
)

func main() {
    config := struct {
        Section struct {
            Enabled bool
            Path    string
        }
    }{}

    err := gcfg.ReadFileInto(&config, "conf.ini")

    if err != nil {
        fmt.Println("Failed to parse config file: %s", err)
    }
    fmt.Println(config.Section.Enabled)
    fmt.Println(config.Section.Path)
}

 

  启动运行后,输出如下:

D:\Go_Path\go\src\configmgr>go run config_ini.go
true
/usr/local

 

3. yaml使用

yaml 可能比较陌生一点,但是最近却越来越流行。也就是一种标记语言。层次结构也特别简洁清晰 ,易于阅读和编写,同时也易于机器解析和生成。

golang的标准库中暂时没有给我们提供操作yaml的标准库,但是github上有很多优秀的第三方库开源给我们使用。

  1. 创建 conf.yaml:

enabled: true
path: /usr/local

  2. 下载第三方库:go get  gopkg.in/yaml.v2

  3. 创建 config_yaml.go:

package main

import (
    "fmt"
    "io/ioutil"
    "log"

    "gopkg.in/yaml.v2"
)

type conf struct {
    Enabled bool   `yaml:"enabled"` //yaml:yaml格式 enabled:属性的为enabled
    Path    string `yaml:"path"`
}

func (c *conf) getConf() *conf {
    yamlFile, err := ioutil.ReadFile("conf.yaml")
    if err != nil {
        log.Printf("yamlFile.Get err   #%v ", err)
    }

    err = yaml.Unmarshal(yamlFile, c)
    if err != nil {
        log.Fatalf("Unmarshal: %v", err)
    }
    return c
}

func main() {
    var c conf
    c.getConf()
    fmt.Println("path:" + c.Path)
}

 

  启动运行后,输出如下:

D:\Go_Path\go\src\configmgr>go run config_yaml.go
path:/usr/local

 

最后

以上,就把golang 读取配置文件的方法,都介绍完了。大家可以拿着代码运行起来看看。

 

Go实战--go语言中使用YAML配置文件(与json、xml、ini对比) 生命不止,继续 go go go !!!golang中如何使用json在前面介绍过了: 《Go语言学习之encoding/json包(The way to go)》golang中如何使用xml在前面也有介绍过: 《Go语言学习之encoding/xml(The way to go)》json使用JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据 阅读详情

相关推荐

Visual Studio报错TRK0005找不到CL.exe?三步彻底解决环境变量问题

本文详细解析了Visual Studio报错TRK0005找不到CL.exe的根本原因,并提供了三步彻底解决环境变量问题的方案。从验证安装完整性到配置永久环境变量,再到注册表级修复,帮助开发者建立健壮的开发环境配置体系,确保编译链稳定运行。

weixin_30839881的博客 459

Go 读取 YAML 配置文件的两种方式

哈喽大家好,我是陈明勇,今天分享的内容如何在 Go 里面读取 YAML 配置文件。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有错误的地方,欢迎指出!

cmy_top的博客 5081

光伏电站发电功率预测实战:从基础物理模型到LSTM时间序列分析

本文系统介绍了光伏电站发电功率预测的实战方法,从基础的物理晴空模型到先进的LSTM时间序列分析。通过结合电工杯等竞赛中常用的代码与模型,详细阐述了如何利用历史数据和数值天气预报构建高精度预测体系,并针对阴雨天气等预测瓶颈提出了分场景建模与模型融合等优化策略,为电站运维和电网调度提供可靠的数据支持。

pp12345的博客 216

Go开发学习 | 如何快速读取json/yaml/ini等格式的配置文件使用示例

描述: 作为开发者相信对应用程序的配置文件并不陌生吧,例如 Java Spring Boot 里的 class 目录中程序配置,当然go语言相关项目也是可以根据配置文件的格式内容进行读取的,常规的配置文件格式有 json、ini、yaml (个人推荐)、properties 等,我们可以使用其为程序配置一些初始化的可变参数,例如 数据库字符串链接以及认证密码等等。好,下面作者将依次从json、ini、以及yaml、properties 等顺序进行讲解。0x01 常用模块。

全栈工程师修炼指南-IT知识分享 2215

海量数据 / Vastbase 深度研究笔记 v3.1

v3.1 重点修订:在 v3.0 审慎版基础上,新增“2026 新变量”章节,纳入 7 亿级定增、HTAP / 多模态时序数据库、G100 V3.0 Build 8 的 3CM+2DN 高可用补强、pgvector / V100 / AI 多模叙事,以及集成服务基因与标准软件 ARR 的拉扯。核心关注点是:Vastbase 能否把 openGauss 生态红利、数据库产品矩阵和行业交付能力,转化为可持续、可复购、低边际成本的标准软件收入。海量不是没有业务基本盘,也不是马上失血致死;客户越多,服务债越大。

喝醉酒的小白 544

Java全栈:电影数据检索与推荐系统实战

全文检索个性化推荐数据缓存容器化部署通过这个项目,我们不仅实践了Java全栈开发的各项技术,还接触了推荐系统的核心算法实现。用户历史行为数据物品特征数据上下文信息实时反馈算法的准确性推荐的多样性系统的实时性冷启动问题性能优化效果评估VIEW, // 浏览CLICK, // 点击SEARCH, // 搜索RATE, // 评分COMMENT, // 评论SHARE, // 分享WATCH_TIME, // 观看时长。

exlink2012的专栏 891

golang 读取yaml配置文件中的数据 两种方式:yaml.v2 和 Viper

golang 读取yaml配置文件中的数据 两种方式:yaml.v2 和 Viper

m0_51232338的博客 6799

XRoboToolkit —— 基于 PICO 4 Ultra 的机器人遥操作方案(一)

视觉-语言-动作模型(Vision-Language-Action models)的快速发展催生了对大规模、高质量机器人演示数据集的迫切需求。尽管遥操作是数据采集的主要方法,但现有方法存在可扩展性有限、设置流程复杂以及数据质量不佳等问题。本文提出XRoboToolkit,这是一个基于OpenXR标准的跨平台扩展现实(XR)机器人遥操作框架。该系统具备低延迟立体视觉反馈、基于优化的逆运动学算法,并支持多种跟踪模态,包括头部、控制器、手部及辅助运动追踪器。

2506_90492529的博客 3305

Golang实践录:读取yaml配置文件

本文对 yaml 文件进行解析。

李迟的专栏 6182

Android实现自动输入文本效果 (附完整源码)

Android实现自动输入文本效果 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 414

【ComfyUI】Wan2.2 Animate 动作迁移重绘视频生成

本文介绍了一个基于ComfyUI的Wan2.2 Animate视频生成工作流,通过动作迁移和视频重绘技术实现高质量视频创作。该系统融合视频帧重建、动作迁移、图像重绘和音频合成等多种AI技术,核心采用Wan2.2 Animate 14B_fp8模型配合专属VAE解码器和LoRA微调模块。工作流程包含输入预处理、模型加载、特征提取、动作采样生成、解码输出和资源清理六个阶段,通过WanVideo系列节点实现从图像/视频输入到最终视频输出的完整处理。系统支持对参考图像进行视觉特征提取和嵌入生成,结合文本/动作嵌入进

Mr数据杨 2444

golang 读写yaml文件

go的系统包没有yaml读写的,需要下载第三方库 go get gopkg.in/yaml.v2 package main import ( "fmt" "gopkg.in/yaml.v2" "io/ioutil" "strconv" ) func checkError(err error){ if err != nil{ panic(err) } } type Study struct{ CourseName string `yaml:"CourseName"` Score

weixin_44001521的博客 7418

安卓15_ROM修改定制化_____修改rom的前提条件 去除各种验证 安卓设备通用

通过博文了解💝💝💝 1-------💝💝💝了解安卓设备的启动流程与核心验证机制 2-------💝💝💝了解安卓设备修改rom中的各种验证机制以及对应的去除方法 3-------💝💝💝了解avb验证与dm验证的本质区别与对应的操作方式 4-------💝💝💝修改rom前的循序步骤 避免验证机制导致的不开机

小马哥的专栏 506

如何读取yaml,json,ini等配置文件【Golang 入门系列九】

如何读取yaml,json,ini等配置文件【Golang 入门系列九】一. go读取json配置文件二、 go读取.ini配置文件三、go读取yaml配置文件 本文转载自如何读取yaml,json,ini等配置文件【Golang 入门系列九】 前面已经讲过一些Go语言的基础知识,感兴趣的朋友可以先看看之前的文章。https://www.cnblogs.com/zhangweizhong/category/1275863.html。 实际项目中,还有一个比较重要的基础功能,就是读取相关的配置文件。今天就来说

ccf19881030的专栏 789

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Windows 安装 RabbitMQ:Erlang OTP 匹配与启动排查

消息队列是分布式系统中实现异步通信、流量削峰与系统解耦的基础设施,AMQP 则为其提供标准化消息路由能力。RabbitMQ 以 Erlang/OTP 为运行时底座,在 Windows 上没有包管理器自动解决依赖,OTP 版本、环境变量、服务账号与 cookie 一致性会直接影响节点启动。理解这些机制,能减少 nodedown、15672 管理界面打不开、epmd 端口冲突等联调成本。它适用于微服务异步任务、日志采集、IoT MQTT 接入以及前后端消息推送等场景。围绕 Windows 下的 Erlang/O

weixin_34357436的博客 525

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

go读取yaml,json,ini等配置文件

实际项目中,要读取一些json等配置文件。今天就来说一说,Golang 是如何读取YAML,JSON,INI等配置文件的。

simply 2475

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Go语言实战-golang读取各种配置文件(ini、json、yaml)

golang读取各种配置文件,ini、json、yaml

qq_36034503的博客 5661

golang几种常用配置文件使用方法总结(yaml、toml、json、xml、ini)

yaml配置文件的使用方法总结 首先介绍使用yaml配置文件,这里使用的是github上第三方开源gopkg.in/yaml.v2 第一步:下载 go get gopkg.in/yaml.v21 第二步:新建一个yaml文件,比如conf.yaml host: localhost:3306 user: root pwd: 123456 dbname: test1234 特别需要强调的是冒号...

TigerwolfC的博客 4万+

Go-如何读取yaml,json,ini等配置文件

1. json使用 JSON 应该比较熟悉,它是一种轻量级的数据交换格式。层次结构简洁清晰 ,易于阅读和编写,同时也易于机器解析和生成。 创建 conf.json: { "enabled": true, "path": "/usr/local" } 新建config_json.go: package main import ( "encoding/json" ...

weixin_30445169的博客 417

golang读取各种配置文件(ini、json、yaml)

日常项目中,读取各种配置文件是避免不了的,本文主要介绍了golang读取各种配置文件(ini、json、yaml),文中通过示例代码介绍的非常详细,对大家的学习或者工作具...

秋̶᭄ꦿ攻城狮࿆ྂ 3165

GoLang 使用goconfig读取配置文件(.ini、.json、.yaml)

一、goconfig读取.ini类型配置文件 1、配置文件(config.ini)如下: [RabbitMQ] MQUrl = amqp://trkj:trkj@192.168.5.62:5672/test Exchange = EX.WALLDATA ExchangeType = fanout RoutingKey = RK.WALLDATA [Base] messageFrequency = 5 2、解析配置文件: package main import (

✍Snoring cat 2124

Golang 多种配置文件解析

Golang 配置文件相关操作 本文以读取数据库配置文件为例 1、JSON 文件 package main ​ /* 解析 json 格式的配置文件 文件内容如下: { "type": "json", "postgres": { "host": "localhost", "port": 5432, "username": "postgres", "password": "postgres", "dbname": "bub...

weixin_43902314的博客 1821
上一篇: Golang 入门系列(八) cron定时任务
下一篇: Golang 入门系列(十) mysql数据库的使用
afront
博客等级 码龄20年 29粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值