如何将 golang 结构编码为 TOML 并使用 BurntSushi/toml 库写入文件?

How to encode golang struct as TOML and write to a file using BurntSushi/toml library?

使用BurntSushi/toml库读取和解码TOML文件非常简单:

var config Config // struct that matches the structure of the TOML file
if _, err := toml.DecodeFile("path/to/file.toml", &config); err != nil {
    // failed to read and decode the file
    fmt.Fatal(err)
}
// at this point config struct contains the values from the file

我想做相反的事情:获取一个结构,将其编码为 TOML 并将其写入文件。

没有单一的函数来编码和写入文件,因此您需要:

  1. 使用 os.Create()
  2. 创建文件
  3. 使用toml.Encoder.Encode()
  4. 将结构编码到文件

假设我们有一个要写入 TOML 格式文件的结构 config


f, err := os.Create("path/to/file.toml")
if err != nil {
    // failed to create/open the file
    log.Fatal(err)
}
if err := toml.NewEncoder(f).Encode(config); err != nil {
    // failed to encode
    log.Fatal(err)
}
if err := f.Close(); err != nil {
    // failed to close the file
    log.Fatal(err)

}