Golang Go语言中怎么优雅的获取 TOML 的动态 map

发布于 1周前 作者 phonegap100 来自 Go语言

比如想实现这样一个配置

users []user

type user struct { username string password string }

这个 toml 应该是长啥样呢?

就是什么格式和解析或什么格式的 struct 才能实现像 php 那样的:

$arr = [
    'users' => [
        ['username'=>'1', 'password' => '1']
    ]
];

// foreach ($arr[‘users’] as $item) if $req[‘user’] == $item[‘username’] …

场景是一个特别小的内部使用的用户配置文件。在这个配置里面的才能访问这个服务不值顾搞套数据库。


Golang Go语言中怎么优雅的获取 TOML 的动态 map

更多关于Golang Go语言中怎么优雅的获取 TOML 的动态 map的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

8 回复

<br>[[users]]<br>username = 'asdf'<br>password = 'zxcv'<br>

更多关于Golang Go语言中怎么优雅的获取 TOML 的动态 map的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


再多一个呢?

#2
[[users]]
username = 'asdf’
password = ‘zxcv’

[[users]]
username = 'qqq’
password = ‘www’

[[users]]
username = 'eee’
password = 'rrr’

回复里是不能插代码块的吗。。

看起来还是 json 或 yaml 表述清楚点。。。

#4
toml 本意是不要像 yaml 那样缩进得让人眼花,但是现在的趋势还是要加,所以说这方面是不如 yaml

推荐一下配置库

https://github.com/gookit/config

Go 应用配置加载管理,支持多种格式 JSON, YAML, TOML, INI, HCL, ENV, Flags ,多文件加载,支持数据合并,解析环境变量名等待

没法修改评论 :)
如果只是取数据使用一下, 不用绑 struct ,可以加载后 config.Get() 数据作为 map 来处理

在Golang中优雅地获取TOML配置并将其解析为动态的map,可以使用go-toml库。以下是一个简洁的示例,展示了如何完成这一任务:

  1. 首先,确保你已经安装了go-toml库。你可以通过以下命令安装:

    go get github.com/BurntSushi/toml
    
  2. 接下来,编写代码读取TOML文件并将其解析为map[string]interface{}

    package main
    
    import (
        "fmt"
        "log"
    
        "github.com/BurntSushi/toml"
    )
    
    type Config map[string]interface{}
    
    func main() {
        var config Config
        if _, err := toml.DecodeFile("config.toml", &config); err != nil {
            log.Fatalf("Error decoding TOML: %v", err)
        }
        fmt.Printf("Parsed Config: %+v\n", config)
    }
    

    在这个示例中,Config被定义为一个map[string]interface{}的别名,这使得我们可以直接解析TOML文件到该类型。toml.DecodeFile函数用于读取并解析TOML文件。

  3. 确保你的config.toml文件格式正确,例如:

    title = "TOML Example"
    owner = { name = "Tom Preston-Werner", dob = "1979-05-27T07:32:00Z" }
    

通过这种方式,你可以优雅地读取和解析TOML配置,并将其存储在一个动态的map中,便于后续处理和使用。

回到顶部