使用 Go 读取 TOML 文件时结果为空

我正在尝试用 Go 读取一个 toml 文件。我不仅希望拥有不同的文件系统,filesystem.file而且还希望拥有不同的文件系统filesystem.s3,它们定义了不同的路径。但它只返回一个空的 struct {map[file:{map[]}]}。我错过了什么?


我正在使用这个库来读取 toml 文件:https ://github.com/BurntSushi/toml


文件:


[filesystem.file]

    [filesystem.file.test]

        folder = "tmp/testdata"

    [filesystem.file.test2]

        folder = "tmp/testdata2"

[filesystem.s3]

    [filesystem.s3.test]

        folder = "s3folder/testdata"

我的代码:


package main


type File struct {

    Folder string `toml:"folder"`

}


type FileSystem struct {

    File map[string]File `toml:"file"`

}


type Config struct {

    FileSystem  map[string]FileSystem `toml:"filesystem"`

}


func main() {

    var conf Config

    _, err := toml.DecodeFile("test.toml", &conf)

    if err != nil {

        log.Fatalln("Error on loading config: ", err)

    }

    log.Printf("config: %v", conf)

}



慕码人2483693
浏览 123回答 1
1回答

神不在的星期二

输入中定义的 TOML 对应于一个顶级filesystem结构,包含多种类型 iefile等s3。因此定义等效的 Go 结构来解码这些结构的正确方法是type File struct {    Folder string `toml:"folder"`}type FileSystem struct {    File map[string]File `toml:"file"`    S3   map[string]File `toml:"s3"`}type Config struct {    FileSystem FileSystem `toml:"filesystem"`}https://go.dev/play/p/lfFKVL4_1zx
打开App,查看更多内容
随时随地看视频慕课网APP