知识点 读取配置文件

go语言读取配置文件
go get https://github.com/aWildProgrammer/fconf
以下演示文件保存为demo.ini

[mysql]
  db1.Name = testMysqlDB
  db1.Host = 127.0.0.1
  db1.Port = 3306
  db1.User = root
  db1.Pwd = test
  ; 测试INI风格的注释
  ; 这两行数据的前前面加入了分号,因此,这些数据被认为是注释,将不会影响配置文件正常情况
[tcp]
  Port=3309

func main() {
  c, err := fconf.NewFileConf("./demo.ini")
    if err != nil {
      fmt.Println(err)
    return
    }
  fmt.Println(c.String("mysql.db1.Host"))
  fmt.Println(c.String("mysql.db1.Name"))
  fmt.Println(c.String("mysql.db1.User"))
  fmt.Println(c.String("mysql.db1.Pwd"))

  // 取得配置时指定类型
  port, err := c.Int("mysql.db1.Port")
    if err != nil {
      panic("~")
    }
  fmt.Println(port)
}

 

json使用
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,
采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,
同时也易于机器解析和生成,并有效地提升网络传输效率。

新建一个文件名为conf.json,键入内容:
{
"enabled": true,
"path": "/usr/local"
}
package main

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

type configuration struct {
  Enabled bool
  Path string
}

func main() {
  file, _ := os.Open("conf.json")
  defer file.Close()

  decoder := json.NewDecoder(file)
  conf := configuration{}
  err := decoder.Decode(&conf)
    if err != nil {
      fmt.Println("Error:", err)
    }
  fmt.Println(conf.Path)
}

xml使用
可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
新建一个文件名为conf.xml,键入内容:
<?xml version="1.0" encoding="UTF-8" ?>
<Config>
  <enabled>true</enabled>
  <path>/usr/local</path>
</Config>

package main

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

type configuration struct {
  Enabled bool `xml:"enabled"`
  Path string `xml:"path"`
}

func main() {
  xmlFile, err := os.Open("conf.xml")
    if err != nil {
      fmt.Println("Error opening file:", err)
      return
    }
  defer xmlFile.Close()

  var conf configuration
  if err := xml.NewDecoder(xmlFile).Decode(&conf); err != nil {
    fmt.Println("Error Decode file:", err)
    return
  }

  fmt.Println(conf.Enabled)
  fmt.Println(conf.Path)

}

posted @ 2019-08-16 16:47  初见未来  阅读(154)  评论(0编辑  收藏  举报