【问题标题】:How to decode and encode a specific part of .toml file in golang?如何在golang中解码和编码.toml文件的特定部分?
【发布时间】:2022-06-29 17:59:17
【问题描述】:

我对 BurntSushi/toml 有点陌生,想了解以下案例的解决方案。

假设我们有这个 example.toml 文件

[foo]
fighter = "this-is-a-call"
gu = "fish-with-wrong-spelling"

[bar]
beer = "guinness"
snacks = "pickled-eggs"

[more_examples_below]
...

据我了解,toml.DecodeFile(path, struct) 用于将整个 example.toml 读入 golang 代码。

不过,我还是不明白应该如何仅为 [bar] 部分进行解码/编码?

因此,我应该在 golang 中定义整个结构映射所有 config.toml 吗?如果是,那么是否有另一种方法不这样做,只为 1 个特定块定义一个结构?

【问题讨论】:

    标签: go encoding decoding toml


    【解决方案1】:

    如果您需要编辑现有 .toml 文件的特定部分,viper 可能是这项工作的有用替代方案。关于如何实现它的一些草稿想法

    fh, err := os.OpenFile(path, os.O_RDWR, 0777)
    if err != nil {
        return err
    }
    
    viper.SetConfigType("toml")
    err = viper.ReadConfig(fh)
    if err != nil {
        return err
    }
    
    viper.Set("bar", foo.String())
    err = viper.WriteConfigAs(path)
    
    if err != nil {
        return err
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      • 2023-01-30
      • 2016-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多