Go 语言没有内置解析 yaml 文件的功能,实现 yaml 的解析可以使用第三方库 gopkg.in/yaml.v2 和 gopkg.in/yaml.v3。
下面以解析 config.yml 文件为例,演示解析代码的过程。
使用 go get gopkg.in/yaml.v3 添加引用。
在 config 目录下,新增文件 config.yml 文件,内容如下:
mongodb:  uri: "mongodb://localhost:27017"       # MongoDB连接串  database: "testdb"             # 数据库名称  posts_collection: "testcoll"              # 存储 Post 的集合
这里定义了一个 mongodb 的配置,包含了连接、数据库名称和存储集合名。
接着,对照上面的配置,定义 Config 结构
type Config struct {  MongoDB struct {  Database       string `json:"database"`  PostCollection string `json:"post_collection"`  URI            string `json:"uri"`  } `yaml:"mongodb"`  
}
最后,创建 loadConfig 方法,读取文件并解析
func loadConfig() Config {  var conf Config  dir, err := os.Getwd()  if err != nil {  log.Fatalf("fail to get current directory: %v", err)  }  filename := path.Join(dir, "/config/config.yaml")  data, err := os.ReadFile(filename)  if err != nil {  log.Fatalf("failed to read config.yaml: %v", err)  }  if err = yaml.Unmarshal(data, &conf); err != nil {  log.Fatalf("failed to parse config.yaml: %v", err)  }  return conf  
}
os.Getwd() 获取当前工作目录,然后使用 path.Join 拼接完整的文件名。
以上,就是 go 解析 yaml 文件的方法。