gpt4 book ai didi

go - 将结构内容写入yml文件

转载 作者:行者123 更新时间:2023-12-03 10:09:17 26 4
gpt4 key购买 nike

我有一个像下面的结构

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
}
是否有实现此目的的库/方法?谢谢!

最佳答案

该库应帮助您获得所需的信息: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

关于go - 将结构内容写入yml文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65207143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com