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

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
}