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结构体

最新文章

  1. Azure Queue Storage 基本用法 -- Azure Storage 之 Queue
  2. 清晰易懂TCP通信原理解析(附demo、简易TCP通信库源码、解决沾包问题等)C#版
  3. 装个蒜。学习下dispatch queue
  4. hibernate-取消关联外键引用数据丢失抛异常的设置@NotFound
  5. metasploit模块功能介绍
  6. Android酷炫实用的开源框架(UI框架) 转
  7. Python进阶04 函数的参数对应
  8. dedecms不安全啊
  9. PHP 导出 Excell
  10. mongodb之java CRUD 简单操作
  11. ZOJ2334 Monkey King 并查集 STL
  12. win10 uwp MVVM 轻量框架
  13. 《跟我学Shiro》学习笔记 第一章:Shiro简介
  14. Windows下配置vue的环境
  15. JVM内存异常与常用内存参数设置总结
  16. Spring Boot与消息
  17. USACO1.4 1.5 搜索剪枝与数字 洛谷OJ P1214 P1215 P1217 P1218
  18. python入门(四)
  19. ThreadLocal源码调试——“this”作为key
  20. numpy中pad函数的常用方法

热门文章

  1. .NET 支付宝SDK新版 AlipayEasySDK 配置文件详细说明
  2. rt-thread模糊到清晰系列: timer.c
  3. 基于Vue3+TS的Monorepo前端项目架构设计与实现
  4. JS逆向实战11——某金属集团动态cookie加密
  5. python 依据IP查找其所属网段
  6. JS弹窗遮罩 POP
  7. Avalonia 实现平滑拖动指定控件
  8. 图扑 Web SCADA 智慧制硅厂,打造新时代制硅工业
  9. centos7配置vue环境
  10. 两行CSS让页面提升了近7倍渲染性能