将结构的内容写入 yml 文件

我有一个像下面这样的结构


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

}

是否有图书馆/方式来实现这一目标?谢谢!


江户川乱折腾
浏览 116回答 1
1回答

杨魅力

该库应该可以帮助您获得所需的内容:https ://github.com/go-yaml/yaml对此的要求是导出配置结构的成员(大写名称)。这是您的结构定义的一个简短示例:package mainimport (    "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: 7mapping:  key: value  key2: value2
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go