golang 读取Yaml数组文件

yaml文件:config.yaml

servers:
  - info:
      description: "台州-填报库"
      IP: "10.1.1.1"
      port: "1433"
      username: "username"
      password: "password"
      dbtype: "sqlserver"

  - info:
      description: "台州-采集库"
      IP: "10.1.1.2"
      port: "1433"
      username: "username"
      password: "password"
      dbtype: "sqlserver"

  - info:
      description: "台州-业务库"
      IP: "10.1.1.3"
      port: "5432"
      username: "username"
      password: "password"
      dbtype: "pgsql"  

注意info前面的横线(-)+ 空格
golang读取:

// 定义你的YAML结构
type Config struct {
	Description string `yaml:"description"`
	IP          string `yaml:"IP"`
	Port        string `yaml:"port"`
	Username    string `yaml:"username"`
	Password    string `yaml:"password"`
	DbType      string `yaml:"dbtype"`
}

type InfoConfig struct {
	Info Config `yaml:"info"`
}

type serversInfoConfig struct {
	Servers []InfoConfig `yaml:"servers"`  // 注意这里
}

func ReadConfig() {
	// 读取YAML文件
	yamlFile, err := os.ReadFile("config.yaml")
	if err != nil {
		log.Fatalf("error: %v", err)
	}

	// 解析YAML
	var config serversInfoConfig
	err = yaml.Unmarshal(yamlFile, &config)
	if err != nil {
		log.Fatalf("error: %v", err)
	}

	// 打印结果
	for i := 0; i < len(config.Servers); i++ {
		log.Println("DataBase Server Info:")
		log.Printf("Description: %s\n", config.Servers[i].Info.Description)
		log.Printf("IP: %s\n", config.Servers[i].Info.IP)
		log.Printf("Port: %s\n", config.Servers[i].Info.Port)
		log.Printf("Username: %s\n", config.Servers[i].Info.Username)
		log.Printf("Password: %s\n", config.Servers[i].Info.Password)
		log.Printf("DbType: %s\n", config.Servers[i].Info.DbType)
	}
}

依赖库:

import (
	"gopkg.in/yaml.v3"
)

你可能感兴趣的:(golang,开发语言,后端)