==yaml内容==

gin_mode: release
authors:
- "111"
- "222"
age: 18
dev:
  password: 123
test:
  password: 88

==读写程序==

package main

import (
    "fmt"
    "gopkg.in/yaml.v2"
    "io/ioutil"
)

type Pwd struct {
    Password int `yaml:"password"`
}
type Env struct {
    GinMode string   `yaml:"gin_mode"`
    Authors []string `yaml:"authors"`
    Age     int      `yaml:"age"`
    Dev     Pwd      `yaml:"dev"`
    Test    Pwd      `yaml:"test"`
}

func main() {
    path := "yaml/test.yaml"

    // 读取yaml
    env := readYaml(path)

    // 修改值
    env.Age = 18
    env.Test.Password = 88

    // 写入yaml
    writeYaml(path, env)
}

func checkError(err error) {
    if err != nil {
        panic(err)
    }
}

func readYaml(path string) (env Env) {
    content, err := ioutil.ReadFile(path)
    checkError(err)

    err = yaml.Unmarshal(content, &env)
    checkError(err)

    fmt.Println(err, env)
    return env
}

func writeYaml(path string, env Env) {
    data, err := yaml.Marshal(env)
    checkError(err)

    err = ioutil.WriteFile(path, data, 0777)
    checkError(err)
}