V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
dzdh
V2EX  ›  Go 编程语言

怎么优雅的获取 TOML 的动态 map

  •  
  •   dzdh · 2022-06-12 00:52:09 +08:00 · 1190 次点击
    这是一个创建于 683 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如想实现这样一个配置

    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'] .....
    

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

    7 条回复    2022-06-13 15:15:59 +08:00
    clownpiece
        1
    clownpiece  
       2022-06-12 09:48:09 +08:00
    ```
    [[users]]
    username = 'asdf'
    password = 'zxcv'
    ```
    dzdh
        2
    dzdh  
    OP
       2022-06-12 09:52:42 +08:00
    @clownpiece 再多一个呢?
    clownpiece
        3
    clownpiece  
       2022-06-12 09:58:26 +08:00
    @dzdh #2
    [[users]]
    username = 'asdf'
    password = 'zxcv'

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

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

    回复里是不能插代码块的吗。。
    dzdh
        4
    dzdh  
    OP
       2022-06-12 12:37:42 +08:00
    @clownpiece 看起来还是 json 或 yaml 表述清楚点。。。
    clownpiece
        5
    clownpiece  
       2022-06-12 12:49:42 +08:00
    @dzdh #4
    toml 本意是不要像 yaml 那样缩进得让人眼花,但是现在的趋势还是要加,所以说这方面是不如 yaml
    jxia
        6
    jxia  
       2022-06-13 15:12:35 +08:00
    推荐一下配置库

    https://github.com/gookit/config

    Go 应用配置加载管理,支持多种格式 JSON, YAML, TOML, INI, HCL, ENV, Flags ,多文件加载,支持数据合并,解析环境变量名等待
    jxia
        7
    jxia  
       2022-06-13 15:15:59 +08:00
    @dzdh 没法修改评论 :)
    如果只是取数据使用一下, 不用绑 struct ,可以加载后 config.Get() 数据作为 map 来处理
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5863 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 06:12 · PVG 14:12 · LAX 23:12 · JFK 02:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.