我正在尝试用 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 maintype 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)}
1 回答
![?](http://img1.sycdn.imooc.com/545847d40001cbef02200220-100-100.jpg)
神不在的星期二
TA贡献1963条经验 获得超6个赞
输入中定义的 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
- 1 回答
- 0 关注
- 122 浏览
添加回答
举报
0/150
提交
取消