登录
首页 >  Golang >  Go问答

如何在golang中解码和编码.toml文件的特定部分?

来源:stackoverflow

时间:2024-04-07 14:09:34 152浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《如何在golang中解码和编码.toml文件的特定部分?》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

我对 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 个特定块定义一个结构?


正确答案


如果您需要编辑现有 .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
}

今天关于《如何在golang中解码和编码.toml文件的特定部分?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>