为了账号安全,请及时绑定邮箱和手机立即绑定

将结构的内容写入 yml 文件

将结构的内容写入 yml 文件

Go
江户川乱折腾 2022-07-18 16:42:04
我有一个像下面这样的结构type config struct{    version int    mapping map[string]string}我想将上述结构的内容写入 Go 中的 yml 文件。我在下面尝试过,但没有运气。func writeConfig(c *config) error {    d, err := yaml.Marshal(c)    if err != nil {        return err    }    home, err := os.UserHomeDir()    if err != nil {        return err    }    configpath := filepath.FromSlash(home + "/abc/config.yml")    // Open file using READ & WRITE permission.    file, err := os.OpenFile(configpath, os.O_RDWR, 0644)    if err != nil {        return err    }    defer file.Close()    // Write some text line-by-line to file.    _, err = file.WriteString(string(d))    if err != nil {        return err    }    // Save file changes.    err = file.Sync()    if err != nil {        return err    }    return nil}是否有图书馆/方式来实现这一目标?谢谢!
查看完整描述

1 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

该库应该可以帮助您获得所需的内容:https ://github.com/go-yaml/yaml


对此的要求是导出配置结构的成员(大写名称)。


这是您的结构定义的一个简短示例:


package main


import (

    "log"

    "os"


    "gopkg.in/yaml.v2"

)


type config struct {

    Version int

    Mapping map[string]string

}


func main() {


    file, err := os.OpenFile("test.yml", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)

    if err != nil {

        log.Fatalf("error opening/creating file: %v", err)

    }

    defer file.Close()


    enc := yaml.NewEncoder(file)


    err = enc.Encode(config{

        Version: 7,

        Mapping: map[string]string{

            "key":  "value",

            "key2": "value2",

        },

    })

    if err != nil {

        log.Fatalf("error encoding: %v", err)

    }


}

这将产生以下 yaml 文件:


version: 7

mapping:

  key: value

  key2: value2


查看完整回答
反对 回复 2022-07-18
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号