1. json使用

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

  1. 创建 conf.json:
  1. {
  2. "enabled": true,
  3. "path": "/usr/local"
  4. }
  1. 新建config_json.go:
  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "os"
  6. )
  7. type configuration struct {
  8. Enabled bool
  9. Path string
  10. }
  11. func main() {
  12. // 打开文件
  13. file, _ := os.Open("conf.json")
  14. // 关闭文件
  15. defer file.Close()
  16. //NewDecoder创建一个从file读取并解码json对象的*Decoder,解码器有自己的缓冲,并可能超前读取部分json数据。
  17. decoder := json.NewDecoder(file)
  18. conf := configuration{}
  19. //Decode从输入流读取下一个json编码值并保存在v指向的值里
  20. err := decoder.Decode(&conf)
  21. if err != nil {
  22. fmt.Println("Error:", err)
  23. }
  24. fmt.Println("path:" + conf.Path)
  25. }

启动运行后,输出如下:

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

2. ini的使用

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

  1. 创建 conf.ini:
  1. [Section]
  2. enabled = true
  3. path = /usr/local # another comment

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

  1. 新建 config_ini.go:
  1. package main
  2. import (
  3. "fmt"
  4. gcfg "gopkg.in/gcfg.v1"
  5. )
  6. func main() {
  7. config := struct {
  8. Section struct {
  9. Enabled bool
  10. Path string
  11. }
  12. }{}
  13. err := gcfg.ReadFileInto(&config, "conf.ini")
  14. if err != nil {
  15. fmt.Println("Failed to parse config file: %s", err)
  16. }
  17. fmt.Println(config.Section.Enabled)
  18. fmt.Println(config.Section.Path)
  19. }

启动运行后,输出如下:

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

3. yaml使用

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

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

  1. 创建 conf.yaml:
  1. enabled: true
  2. path: /usr/local
  1. 下载第三方库:go get gopkg.in/yaml.v2

  2. 创建 config_yaml.go:

  1. package main
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "log"
  6. "gopkg.in/yaml.v2"
  7. )
  8. type conf struct {
  9. Enabled bool `yaml:"enabled"` //yaml:yaml格式 enabled:属性的为enabled
  10. Path string `yaml:"path"`
  11. }
  12. func (c *conf) getConf() *conf {
  13. yamlFile, err := ioutil.ReadFile("conf.yaml")
  14. if err != nil {
  15. log.Printf("yamlFile.Get err #%v ", err)
  16. }
  17. err = yaml.Unmarshal(yamlFile, c)
  18. if err != nil {
  19. log.Fatalf("Unmarshal: %v", err)
  20. }
  21. return c
  22. }
  23. func main() {
  24. var c conf
  25. c.getConf()
  26. fmt.Println("path:" + c.Path)
  27. }

启动运行后,输出如下:

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

Go-如何读取yaml,json,ini等配置文件的更多相关文章

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

    实际项目中,读取相关的系统配置文件是很常见的事情.今天就来说一说,Golang 是如何读取YAML,JSON,INI等配置文件的. 1. json使用 JSON 应该比较熟悉,它是一种轻量级的数据交换 ...

  2. python-通过configparser模块读取后缀为 .ini 的配置文件信息

    前言 一般为了方便会将路径,连接信息等写到配置文件(通常会将这些信息写到yaml,ini....配置文件)中,configparser模块读取后缀为 .ini 的配置文件信息 配置文件格式 #存在 c ...

  3. yaml,json,ini这三种格式用来做配置文件优缺点

    适合人类编写:ini > toml > yaml > json > xml > plist可以存储的数据复杂度:xml > yaml > toml ~ jso ...

  4. 配置文件yaml和ini

    前言 本文主要介绍配置文件yaml和ini的读取. 一.yaml文件 YAML是一个可读性高,易于理解,用来表达数据序列化的格式.语法与python的语法类似.文件后缀  .yaml 下面是yaml文 ...

  5. python的logging模块之读取yaml配置文件。

    python的logging模块是用来记录应用程序的日志的.关于logging模块的介绍,我这里不赘述,请参见其他资料.这里主要讲讲如何来读取yaml配置文件进行定制化的日志输出. python要读取 ...

  6. Asp .Net Core 读取appsettings.json配置文件

         Asp .Net Core 如何读取appsettings.json配置文件?最近也有学习到如何读取配置文件的,主要是通过 IConfiguration,以及在Program中初始化完成的. ...

  7. .net core读取json格式的配置文件

    在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用j ...

  8. c#读取appsetting.json配置文件

    asp.net core 取消了web.config配置文件,而将appsetting.json作为了配置文件. 那么,怎么读取相关数据呢?这里我在appsetting.json中添加一些信息 第一种 ...

  9. python 读取yaml文件

    简介 在实际开发过程中,我们可能需要读取一些配置文件的配置信息,例如ini.yaml.property等格式,本文将讲述怎么去获取和设置yaml文件的相关参数. 示例yaml文件 test1: tes ...

随机推荐

  1. python爬虫笔记之用cookie访问需要登录的网站

     目标:用cookie访问一个需要登录的网站 如图,直接访问会跳转到登录页面,提示登录. 运行结果: 直接在浏览器上输入该url,网站立马跳转到登录页面.  方法: 1.先手动登录,通过抓包获取coo ...

  2. 【Download error:TOO MANY REQUESTS】&【TypeError:excepted string or buffer】

    <用python写网络爬虫>,1.4.4链接爬虫,运行时,遇到错误: Download error:TOO MANY REQUESTS Traceback(most recent call ...

  3. QQ Music 音乐插件DFX unable to open skin configration 的解决方法

    设置 C:\Program Files (x86)\Tencent\QQMusic\Plugins\Dfx\dfx_skin.txt  它的权限 允许程序读取执行

  4. Baozi Leetcode solution 1036: Escape a Large Maze

    Problem Statement In a 1 million by 1 million grid, the coordinates of each grid square are (x, y) w ...

  5. 2-1. 基于OpenSSL的传输子系统实现

    一. 基本传输子系统程序设计 客户端可上传文件至服务器,或下载服务器上的文件 系统程序构架: 客户端 服务器 TCP建立连接 menu()-> 上传命令.下载命令 close(socket) T ...

  6. IT技术人员的自我修养

    1. 前言        在IT领域摸爬滚打多年,从一个普通程序员到技术主管,到技术经理,再到技术总监,踩过不少坑.加过不少班,也背过不少锅,在提升自身技术能力与管理能力的同时,也一直在思考,作为IT ...

  7. 10分钟了解分布式CAP、BASE理论

    CAP理论 2000年7月,Eric Brewer教授提出CAP猜想:2年后,Seth Gilbert和Nancy Lynch从理论上证明了CAP:之后,CAP理论正式成为分布式计算领域的公认定理. ...

  8. 【iOS】UILabel 常用属性设置

    UILabel 的一些常用属性,示例代码如下: // 字体大小 label.font = [UIFont systemFontOfSize:14.0]; label.font = [UIFont fo ...

  9. docker挂载volume的用户权限问题,理解docker容器的uid

    docker挂载volume的用户权限问题,理解docker容器的uid 在刚开始使用docker volume挂载数据卷的时候,经常出现没有权限的问题. 这里通过遇到的问题来理解docker容器用户 ...

  10. Pyenv虚拟环境的创建(虚拟机)

    创建pyenv虚拟环境 sudo yum install openssl* 安装其所需要的库文件 git clone https://github.com/yyuu/pyenv.git ~/.pyen ...