golang读写yaml

==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)
}
复制代码

 

posted @   大墨垂杨  阅读(448)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2016-04-07 Maven学习随记
点击右上角即可分享
微信分享提示