Go 将结构的内容写入yml文件
我有一个如下的结构Go 将结构的内容写入yml文件,go,yaml,Go,Yaml,我有一个如下的结构 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.UserHom
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
}
是否有实现此目标的库/方法?谢谢大家!此库可以帮助您获得所需的: 需要导出配置结构的成员(大写名称) 下面是结构定义的一个简短示例:
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
注意:对于更新的示例代码:
yaml.Marshal
也可以工作,如果您将config
的成员设置为公共的。使用编码器可以节省一些额外的代码。酷。非常感谢。