首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(去)如何使用toml文件?

(去)如何使用toml文件?
EN

Stack Overflow用户
提问于 2015-12-16 08:50:47
回答 4查看 19.4K关注 0票数 9

作为标题,我想知道如何使用戈朗的toml文件。

在此之前,我展示了我的坟墓例子。是对的吗?

代码语言:javascript
复制
[datatitle]
enable = true
userids = [
    "12345", "67890"
]
    [datatitle.12345]
    prop1 = 30
    prop2 = 10

    [datatitle.67890]
    prop1 = 30
    prop2 = 10

然后,我想将这些数据设置为struct类型。

因此,我想访问子元素,如下所示。

代码语言:javascript
复制
datatitle["12345"].prop1
datatitle["67890"].prop2

提前感谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-12-16 09:46:45

首先获取BurntSushi的toml解析器:

go get github.com/BurntSushi/toml

BurntSushi解析文档并将其映射到结构中,这正是您想要的。

然后执行以下示例并从中学习:

代码语言:javascript
复制
package main

import (
    "github.com/BurntSushi/toml"
    "log"
)

var tomlData = `title = "config"
[feature1]
enable = true
userids = [
  "12345", "67890"
]

[feature2]
enable = false`

type feature1 struct {
    Enable  bool
    Userids []string
}

type feature2 struct {
    Enable bool
}

type tomlConfig struct {
    Title string
    F1    feature1 `toml:"feature1"`
    F2    feature2 `toml:"feature2"`
}

func main() {
    var conf tomlConfig
    if _, err := toml.Decode(tomlData, &conf); err != nil {
        log.Fatal(err)
    }
    log.Printf("title: %s", conf.Title)
    log.Printf("Feature 1: %#v", conf.F1)
    log.Printf("Feature 2: %#v", conf.F2)
}

请注意tomlData及其如何映射到tomlConfig结构。

参见https://github.com/BurntSushi/toml上的更多示例

票数 10
EN

Stack Overflow用户

发布于 2015-12-18 03:48:48

这个问题是用推荐的pkg /toml解决的!我做了下面的工作,这是代码的一部分。

toml实例

代码语言:javascript
复制
[title]
enable = true
[title.clientinfo.12345]
distance = 30
some_id = 6

Golang实例

代码语言:javascript
复制
type TitleClientInfo struct {
    Distance int    `toml:"distance"`
    SomeId  int     `toml:"some_id"`
}

type Config struct {
    Enable     bool     `toml:"enable"`
    ClientInfo map[string]TitleClientInfo `toml:"clientinfo"`
}

var config Config
_, err := toml.Decode(string(d), &config)

然后,它就可以像我预期的那样使用了。

代码语言:javascript
复制
config.ClientInfo[12345].Distance

谢谢!

票数 3
EN

Stack Overflow用户

发布于 2020-04-14 13:39:58

使用解决方案Viper,您可以使用JSON、TOML、YAML、HCL、INI和其他属性格式的配置文件。

创建文件:

代码语言:javascript
复制
./config.toml

首次进口:

代码语言:javascript
复制
import (config "github.com/spf13/viper")

初始化:

代码语言:javascript
复制
config.SetConfigName("config")
config.AddConfigPath(".")
err := config.ReadInConfig()
if err != nil {             
    log.Println("ERROR", err.Error())
}

得到价值:

代码语言:javascript
复制
config.GetString("datatitle.12345.prop1")
config.Get("datatitle.12345.prop1").(int32)

医生:https://github.com/spf13/viper

例如:https://repl.it/@DarlanD/Viper-Examples#main.go

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34307488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档