我的结构如下所示
type config struct{
version int
mapping map[string]string
}我想把上面的结构的内容写到一个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
}是否有实现这一目标的库/方法?谢谢你!
发布于 2020-12-08 22:14:47
这个库应该可以帮助您获得所需的东西: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: value2https://stackoverflow.com/questions/65207143
复制相似问题