分类: go

  • go解析yaml文件配置

    gopkg.in/yaml.v2 是 go 语言解析 yaml 格式配置文件的开源库,

    源码地址如下:

    https://github.com/go-yaml/yaml

    使用安装步骤如下:

    在命令行执行

    go get gopkg.in/yaml.v2

    示例代码:

    conf.yaml 文件

    rabbitmq:
        host: localhost
        port: 5672
        username: admin
        password: password

    需要注意 yaml 文件里面的字符都是小写

    go 代码示例:

    package main
    
    import (
            "fmt"
            "io/ioutil"
            "log"
    
            yaml "gopkg.in/yaml.v2"
    )
    
    type Conf struct {
            RabbitMQ struct {
                    Host     string `yaml:"host"`
                    Port     int64  `yaml:"port"`
                    Username string `yaml:"username"`
                    Password string `yaml:"password"`
            }
    }
    
    func readConf(filename string) (*Conf, error) {
            buf, err := ioutil.ReadFile(filename)
            if err != nil {
                    return nil, err
            }
    
            var conf Conf
            err = yaml.Unmarshal(buf, &conf)
            if err != nil {
                    return nil, fmt.Errorf("in file %q: %v", filename, err)
            }
    
            return &conf, nil
    }
    
    func main() {
            conf, err := readConf("conf.yaml")
            if err != nil {
                    log.Fatal(err)
            }
            fmt.Print("%v", conf)
    }