首页 > 其他分享 >Go--解析yaml文件

Go--解析yaml文件

时间:2022-12-08 17:59:32浏览次数:28  
标签:string err -- fmt yaml conf Go password

yaml 文件是目前最常用的配置文件,使用go语言编写代码和工具时,也会用到yaml文件,将服务配置及中间件等信息定义到yaml文件中,后续可根据实际场景来选用。

//先下载外部包
go get -u gopkg.in/yaml.v2

 

1、定义yaml配置文件

conf/test.yaml

ck:
  host: 11.11.11.11
  port: 9001
  database: db2
  username: test2
  password: 123ck456
user: test
password: 123yy456
host: 10.10.10.10
port: 3306
dbname: db1

 

2、主程序

package main

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

type Conn struct {
    Ck struct {
        Host     string `yaml:"host"`
        Port     string `yaml:"port"`
        Database string `yaml:"database"`
        Username string `yaml:"username"`
        Password string `yaml:"password"`
    }
}
type Mysql struct {
    User     string `yaml:"user"`
    Password string `yaml:"password"`
    Host     string `yaml:"host"`
    Port     string `yaml:"port"`
    DBname   string `yaml:"dbname"`
}

const cfgFile = "conf/test.yaml"

func main() {
    data, err := ioutil.ReadFile(cfgFile)  //读取配置文件的路径
    if err != nil {
        fmt.Printf("err: %v\n", err)
        return
    }

    var conf Conn
    if err := yaml.Unmarshal(data, &conf); err != nil {  //将yaml文件中的信息反序列化给conf结构体
        fmt.Printf("err: %v\n", err)
        return
    }
    yml, _ := yaml.Marshal(conf)  //序列化为yaml文件
    fmt.Printf("conf: %#v\n", conf)
    fmt.Printf("%s\n", yml)

    var confs Mysql
    if err := yaml.Unmarshal(data, &confs); err != nil {
        fmt.Printf("err: %v\n", err)
        return
    }
    yaml, _ := yaml.Marshal(confs)
    fmt.Printf("conf: %#v\n", confs)
    fmt.Printf("%s\n", yaml)
}

 

3、输出结果

conf: main.Conn{Ck:struct { Host string "yaml:\"host\""; Port string "yaml:\"por
t\""; Database string "yaml:\"database\""; Username string "yaml:\"username\"";
Password string "yaml:\"password\"" }{Host:"11.11.11.11", Port:"9001", Database:
"db2", Username:"test2", Password:"123ck456"}}
ck:
    host: 11.11.11.11
    port: "9001"
    database: db2
    username: test2
    password: 123ck456

conf: main.Mysql{User:"test", Password:"123yy456", Host:"10.10.10.10", Port:"330
6", DBname:"db1"}
user: test
password: 123yy456
host: 10.10.10.10
port: "3306"
dbname: db1

 

 

 

 

将yaml文件中的信息反序列化给Config结构体

标签:string,err,--,fmt,yaml,conf,Go,password
From: https://www.cnblogs.com/Xinenhui/p/16966823.html

相关文章

  • django三板斧
    今日内容概要纯手撸web框架基于wsgiref模块代码封装优化动静态网页jinja2模板语法python主流web框架django框架简介django基本操作命令django小白必会三板斧今......
  • 数据安全新战场,EasyMR为企业筑起“安全防线”
    2020年1月,时间跨度长达14年的,微软2.5亿条客户服务和支持记录在网上泄露;同年4月,微盟发生史上最贵“删库跑路”事件,造成微盟市值一夜之间缩水约24亿港币;今年7月,网信办依据......
  • 破产姐妹
    S1-6季高清双语视频链接:https://pan.baidu.com/s/1Hv25_iNEaplodBs4pTmlmw提取码:boxp1-6季原声音频&中英文台词剧本https://pan.baidu.com/s/1BW_d46Zy7vVIKqi7s2wKIw......
  • 腾讯云服务器迁移云硬盘
     使用场景:将同个地区的云服务器A上的硬盘挂在到挂载到云服务器B上(必须是同一服务地区)第一步:进入云服务A控制台用shell命令:umount+ 硬盘例如云服务器A上的硬盘目录......
  • Linux centos7升级内核
    1、查看当前内核版本 2、 CentOS允许使用ELRepo,这是一个第三方仓库,可以将内核升级到最新版本。1.导入该源的秘钥rpm--importhttps://www.elrepo.org/RPM-GPG-KE......
  • 前端笔记_3_页面变灰
    html{-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);-webkit-filter:grayscale(1);-webkit-filter:......
  • 用python计算圆周率PI
    描述用python计算圆周率PI要求能算到小数点后面越多越好(5分)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪......
  • 卡尔曼滤波之基本概念和状态观测器
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • Python7段数码管绘制
    #七段数码管绘制importturtleastimporttimeasTdefdrawGap():#绘制数码管的间隔t.penup()t.fd(5)defdrawLine(draw):#绘制单段数码管,draw为True时,则实......
  • swagger 接口文档转 pdf
    步骤1、先把swagger导出swagger.json文件2、windows目录挂载注意下,比如windows目录D:\swagger得写成/D/swagger,swagger.json文件放在D:\swagger目录下,执行......