配置文件

mysql:
  conn: 1.1.1.1
  user: yang
  password: yang
consul:
  addr: 2.2.2.2
  user: yang
  password: yang

代码

package main

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

type EnvSD struct {
	Mysql  Mysql  `yaml:"mysql"`  // 这里是非匿名结构体,必须在配置中指定 mysql 字段作为 key
	Consul Consul `yaml:"consul"`
}

type Mysql struct {
	Conn string           `yaml:"conn"`
	Desc string           `yaml:"desc"`
	Auth `yaml:",inline"` // 这里使用了匿名结构体, 在配置文件中就直接指定 user, password即可
}

type Consul struct {
	Addr string           `yaml:"addr"`
	Desc string           `yaml:"desc"`
	Auth `yaml:",inline"`
}

type Auth struct {
	User     string `yaml:"user"`
	Password string `yaml:"password"`
}

func main() {

	b, _ := os.ReadFile("./conf.yaml")
	fmt.Println(string(b))

	var conf EnvSD
	yaml.Unmarshal(b, &conf)

	fmt.Printf("%+v\n", conf)
}