forked from go/golangs_learn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
4.2 KiB
198 lines
4.2 KiB
package main
|
|
|
|
import (
|
|
"github.com/golang/glog"
|
|
"gopkg.in/yaml.v3"
|
|
"io/ioutil"
|
|
)
|
|
|
|
var PATH = "D:\\EPWork\\goland\\workspace\\golang_learn\\data_func\\go_to_yaml\\config.yaml"
|
|
|
|
func main() {
|
|
if LoadJd(PATH) == nil {
|
|
glog.Info("执行简单配置:", DatabaseConfigJd)
|
|
}
|
|
if LoadFz(PATH) == nil {
|
|
glog.Info("执行复杂一配置:", DatabaseConfigFz)
|
|
}
|
|
if Load(PATH) == nil {
|
|
glog.Info("执行复杂二配置:", DatabaseConfigFz)
|
|
glog.Info("获取值:", DatabaseConfigFz.Mysql.Password)
|
|
}
|
|
if LoadMap(PATH) == nil {
|
|
glog.Info("执行集合-复杂配置:", DatabaseConfigMap)
|
|
maps := DatabaseConfigMap.Map
|
|
glog.Info("解析详情444:", &maps)
|
|
for _, val := range *&maps {
|
|
glog.Info("解析详情555:", val)
|
|
m3 := val.(map[string]interface{})
|
|
for k, v := range m3 {
|
|
glog.Info("解析详情666:key=", k, "; value=", v)
|
|
}
|
|
}
|
|
}
|
|
if LoadMap2(PATH) == nil {
|
|
glog.Info("执行集合-简化配置:", DatabaseConfigMap2)
|
|
maps := DatabaseConfigMap2.Map
|
|
for k, v := range maps {
|
|
glog.Info("解析详情000:key=", k, "; value=", v)
|
|
for kk, vv := range v {
|
|
glog.Info("解析详情---:key=", kk, "; value=", vv)
|
|
}
|
|
}
|
|
}
|
|
if LoadList(PATH) == nil {
|
|
glog.Info("执行数组配置:", DatabaseConfigList)
|
|
list := DatabaseConfigList.List
|
|
glog.Info("解析详情:", list)
|
|
}
|
|
}
|
|
|
|
type ConfigJd struct {
|
|
Username string `yaml:"username"`
|
|
Password string `yaml:"password"`
|
|
}
|
|
type ConfigFz struct {
|
|
Redis struct {
|
|
Address string `yaml:"address"`
|
|
Password string `yaml:"password"`
|
|
}
|
|
Mysql struct {
|
|
Username string `yaml:"username"`
|
|
Password string `yaml:"password"`
|
|
}
|
|
}
|
|
type Config struct {
|
|
Redis Redis `yaml:"redis"` //或者:`yaml:"redis, inline"`
|
|
Mysql Mysql `yaml:"mysql"` //或者:`yaml:"mysql, inline"`
|
|
}
|
|
type Redis struct {
|
|
Address string `yaml:"address"`
|
|
Password string `yaml:"password"`
|
|
}
|
|
type Mysql struct {
|
|
Username string `yaml:"username"`
|
|
Password string `yaml:"password"`
|
|
}
|
|
|
|
var DatabaseConfigJd *ConfigJd
|
|
|
|
//解析函数
|
|
func LoadJd(path string) error {
|
|
conf := new(ConfigJd)
|
|
yamlFile, err := ioutil.ReadFile(path)
|
|
if err != nil {
|
|
glog.Info("发生异常:", err)
|
|
return err
|
|
}
|
|
err = yaml.Unmarshal(yamlFile, conf)
|
|
if err != nil {
|
|
glog.Error("Unmarshal:", err)
|
|
return err
|
|
}
|
|
DatabaseConfigJd = conf
|
|
return err
|
|
}
|
|
|
|
var DatabaseConfigFz *ConfigFz
|
|
|
|
//解析函数
|
|
func LoadFz(path string) error {
|
|
conf := new(ConfigFz)
|
|
yamlFile, err := ioutil.ReadFile(path)
|
|
if err != nil {
|
|
glog.Info("发生异常:", err)
|
|
return err
|
|
}
|
|
err = yaml.Unmarshal(yamlFile, conf)
|
|
if err != nil {
|
|
glog.Error("Unmarshal:", err)
|
|
return err
|
|
}
|
|
DatabaseConfigFz = conf
|
|
return err
|
|
}
|
|
|
|
var DatabaseConfig *Config
|
|
|
|
//解析函数
|
|
func Load(path string) error {
|
|
conf := new(Config)
|
|
yamlFile, err := ioutil.ReadFile(path)
|
|
if err != nil {
|
|
glog.Info("发生异常:", err)
|
|
return err
|
|
}
|
|
err = yaml.Unmarshal(yamlFile, conf)
|
|
if err != nil {
|
|
glog.Error("Unmarshal:", err)
|
|
return err
|
|
}
|
|
DatabaseConfig = conf
|
|
return err
|
|
}
|
|
|
|
type ConfigMap struct {
|
|
Map []interface{} `yaml:"map"`
|
|
}
|
|
type ConfigMap2 struct {
|
|
Map []map[string]interface{} `yaml:"map"`
|
|
}
|
|
|
|
var DatabaseConfigMap *ConfigMap
|
|
var DatabaseConfigMap2 *ConfigMap2
|
|
|
|
//解析函数
|
|
func LoadMap(path string) error {
|
|
conf := new(ConfigMap)
|
|
yamlFile, err := ioutil.ReadFile(path)
|
|
if err != nil {
|
|
glog.Info("发生异常:", err)
|
|
return err
|
|
}
|
|
err = yaml.Unmarshal(yamlFile, conf)
|
|
if err != nil {
|
|
glog.Error("Unmarshal:", err)
|
|
return err
|
|
}
|
|
DatabaseConfigMap = conf
|
|
return err
|
|
}
|
|
func LoadMap2(path string) error {
|
|
conf := new(ConfigMap2)
|
|
yamlFile, err := ioutil.ReadFile(path)
|
|
if err != nil {
|
|
glog.Info("发生异常:", err)
|
|
return err
|
|
}
|
|
err = yaml.Unmarshal(yamlFile, conf)
|
|
if err != nil {
|
|
glog.Error("Unmarshal:", err)
|
|
return err
|
|
}
|
|
DatabaseConfigMap2 = conf
|
|
return err
|
|
}
|
|
|
|
type ConfigList struct {
|
|
List []string `yaml:"list"`
|
|
}
|
|
|
|
var DatabaseConfigList *ConfigList
|
|
|
|
//解析函数
|
|
func LoadList(path string) interface{} {
|
|
conf := new(ConfigList)
|
|
yamlFile, err := ioutil.ReadFile(path)
|
|
if err != nil {
|
|
glog.Info("发生异常:", err)
|
|
return err
|
|
}
|
|
err = yaml.Unmarshal(yamlFile, conf)
|
|
if err != nil {
|
|
glog.Error("Unmarshal:", err)
|
|
return err
|
|
}
|
|
DatabaseConfigList = conf
|
|
return err
|
|
}
|
|
|