最新消息:欢迎访问小松个人博客,小松最近开始学习java,感觉spring boot比较简单,下载文档开始学习一下

go 常见的配置文件格式与使用

golang 327浏览 0评论

每一个系统都需要配置文件,比如mysql的配置,redis的配置,mail的配置等,在go语言中经常使用到哪种格式的配置文件

①使用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()

    //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(conf.Path)
}

②使用ini

conf.ini 文件

; A comment line
[Section]
enabled = true
path = /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)
}

输出:

true 
/usr/local

③使用yaml

在看了很多的开源的代码发现使用最多的是yaml的格式

conf.yaml 文件

enabled: true
path: /usr/local

使用第三方代码库

go get gopkg.in/yaml.v2

main.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(c)
}

PS.上要注意在定义struct的时候写的注释,系统默认解析XML库,也可以这种写法

QQ交流群:136351212(满) 455721967

如无特别说明,本站文章皆为原创,若要转载,务必请注明以下原文信息:
转载保留版权:小松博客» go 常见的配置文件格式与使用
本文链接地址:https://www.phpsong.com/3271.html

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
木有头像就木有JJ!点这里按步骤申请Gravatar头像吧!