Golang——使用yaml配置文件

来源:互联网 发布:sql 表中复制数据 编辑:程序博客网 时间:2024/05/17 08:10

Golang——使用yaml配置文件

之前一直从事java开发,习惯了使用yaml文件的格式,尤其是清晰的层次结构、注释。抱着好奇心以及对golang的看好开始学习golang,逐渐喜欢上了这门语言,也尝试着在项目中使用golang,当然编程必定涉及到配置,go程序依然如此,自然而然首选yaml配置。

一、安装依赖、

在选择之前也了解过各类yaml解析库,最终选择go-yaml包。地址:go-yaml

go get gopkg.in/yaml.v2

二、config.yaml

channel:  #亿美-催还款账号信息  emayReminder:    userId: abcd    userPws: abcd    url: http://bjmtn.b2m.cn:80/inter/getBalance    threshold: 10000  #国都短信账号信息  guodu:    userId: dddd    userPws: sssss    keyStr: dddddd    url: http://221.179.180.158:8081/QxtSms_surplus/surplus    threshold: 10000

三、读取配置文件ChannelConfig.go

读取yaml与读取json的方式,需要根据层级定义struct。

package utilimport (    "io/ioutil"    "log"    "gopkg.in/yaml.v2")var configFile []bytetype ChannelConfig struct {    Channel Channel `yaml:"channel"`}type Channel struct {    EmayReminderConfig EmayReminder `yaml:"emayReminder"`    GuoduConfig        Guodu        `yaml:"guodu"`}type EmayReminder struct {    UserId    string `yaml:"userId"`    UserPws   string `yaml:"userPws"`    Url       string `yaml:"url"`    Threshold string `yaml:"threshold"`}type Guodu struct {    UserId    string `yaml:"userId"`    UserPws   string `yaml:"userPws"`    Url       string `yaml:"url"`    KeyStr    string `yaml:"keyStr"`    Threshold string `yaml:"threshold"`}func GetChannelConfig() (e *ChannelConfig, err error) {    err = yaml.Unmarshal(configFile, &e)    return e, err}func init() {    var err error;    configFile, err = ioutil.ReadFile("resource/config.yaml")    if err != nil {        log.Fatalf("yamlFile.Get err %v ", err)    }}

四、测试main.go

package mainimport (    "github.com/KarenLKL/Balance/route"    "net/http"    "github.com/KarenLKL/Balance/util"    "log"    "fmt")func main() {    router := route.NewRouter()    config, err := util.GetChannelConfig()    if err != nil {        log.Printf("get emayReminder channel config faild! err: #%v", err)    }    fmt.Println(config)    http.ListenAndServe(":8888", router)}

用问题的地方,请您指正 ^_^

原创粉丝点击