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

1,yaml配置文件的使用方法总结

首先介绍使用yaml配置文件,这里使用的是github上第三方开源   gopkg.in/yaml.v2
第一步:下载

go get gopkg.in/yaml.v21

 

import "gopkg.in/yaml.v2"

 

第二步:新建一个yaml文件,比如conf.yaml

host: localhost:3306user: tigerwolfc
pwd: 654321dbname: tablename

 

特别需要强调的是冒号后面必须有一个空格,以user: tigerwolfc为例,

user: tigerwolfc//冒号后面有空格

 第三步:在程序中使用配置文件获取参数,比如main.go


package main

import (    "io/ioutil"    "gopkg.in/yaml.v2"    "fmt")

func main() {   var c conf
   conf:=c.getConf()
   fmt.Println(conf.Host)
}//profile variablestype conf struct {
    Host string `yaml:"host"`
    User string `yaml:"user"`
    Pwd string `yaml:"pwd"`
    Dbname string `yaml:"dbname"`
}
func (c *conf) getConf() *conf {
    yamlFile, err := ioutil.ReadFile("conf.yaml")    if err != nil {
        fmt.Println(err.Error())
    }
    err = yaml.Unmarshal(yamlFile, c)    if err != nil {
        fmt.Println(err.Error())
    }    return c
}


运行main.go,就可以打印出配置文件中user的值tigerwolfc

 

2,toml配置文件的使用方法总结

TOML 的目标是成为一个极简的配置文件格式。TOML 被设计成可以无歧义地被映射为哈希表,从而被多种语言解析。需要使用第三方库https://github.com/BurntSushi/toml
第一步:下载

go get github.com/BurntSushi/toml

第二部:新建一个toml文件,比如conf.toml


# id
ID = 3# name
Name = "TigerwolfC"# weight
Weight = 58# books
Books = ["Golang", "C++", "Python"]
Sex = true#friend Friend都可以
[friend]
Age = 28Name = "chen_peggy"


细节点:

    • 结构体的成员首字母大写

    • 配置文件的配置项须与结构体成员名一样

    • 支持bool, int, float , 字符串,字符串数组…等,也可以包含其他结构体 如[Friend]
      第三步:在程序中使用配置文件


package main
import (    "fmt"    "github.com/BurntSushi/toml"    "log")//Persontype Person struct {
    ID     uint32    
    Sex    bool    
    Name   string    
    Weight float32    
    Friend *Friends    
    Books  []string} 
    
// friendstype Friends struct {    
    Age  int    
    Name string}

func test_toml() {    var cp Person    var path string = "./conf.toml"    if _, err := toml.DecodeFile(path, &cp); err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%v %v\n", cp.Name, cp.Friend.Name)
}
func main() {
    test_toml()
}/*result:
TigerwolfC  chen_peggy */

 

 

2,


package  main

import (    "fmt"    "github.com/BurntSushi/toml")//订制配置文件解析载体type Config struct{
    Database *Database
    SQL *SQL
}//订制Database块type Database struct {
    Driver    string
    Username  string `toml:"us"` //表示该属性对应toml里的us
    Password string}//订制SQL语句结构type SQL struct{
    Sql1 string `toml:"sql_1"`
    Sql2 string `toml:"sql_2"`
    Sql3 string `toml:"sql_3"`
    Sql4 string `toml:"sql_4"`
}var config *Config=new (Config)
func init(){    //读取配置文件
    _, err := toml.DecodeFile("test.toml",config)    if err!=nil{
        fmt.Println(err)
    }
}
func main() {
      fmt.Println(config)
      fmt.Println(config.Database)
      fmt.Println(config.SQL.Sql1)
}

 


#This file as Config struct#this block as Database struct[Database]
driver="jdbc:mysql.jdbc.Driver"us="ft"password="123"#this block as SQL struct[SQL]
sql_1= "select * from user"sql_2="updata user set name = 'exo'"sql_3="delete * from user"sql_4="Insert into user(id,name) values(5,'ft')"


 

3,json配置文件的使用方法总结

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
新建一个文件名为conf.json,键入内容:

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

新建main.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()
    decoder := json.NewDecoder(file)
    conf := configuration{}
    err := decoder.Decode(&conf)    if err != nil {
        fmt.Println("Error:", err)
    }
    fmt.Println(conf.Path)
}


4,xml配置文件的使用方法总结

可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
新建一个文件名为conf.xml,键入内容:

<?xml version="1.0" encoding="UTF-8" ?>
<Config>
   <enabled>true</enabled>
   <path>/usr/local</path>
</Config>

新建main.go,键入内容:


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)
}


5,ini配置文件的使用方法总结

INI文件格式是某些平台或软件上的配置文件的非正式标准,以节(section)和键(key)构成,常用于微软Windows操作系统中。这种配置文件的文件扩展名多为INI,故名。
新建一个文件名为conf.ini,键入内容:

; A comment line
[Section]
enabled = truepath = /usr/local # another comment

 

使用第三方库:

go get gopkg.in/gcfg.v1

新建main.go,键入代码:


package main
import (    "fmt"    "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)
}



 

评论 (4)

  • ematriant Reply

    Sep 28 2024 02:41 am
  • Drecuck Reply

    Nov 06 2023 09:13 am
  • Unioxia Reply

    Dec 04 2022 03:47 pm
  • estapse Reply

    Jun 15 2022 03:02 am

发表评论