2 回答
TA贡献1810条经验 获得超5个赞
这是一个很好的在线资源,可以帮助您了解 YAML 配置以及如何生成兼容的 Go 结构:https ://yaml.to-go.online/
如果您想要一个服务器列表(切片) - 并且不需要通过键名查找映射 - 然后从这个 YAML 开始:
Servers:
- serverType: production
serverPort: 80
auth:
auth: no
tls:
- serverType: test
serverPort: 8080
auth:
auth: no
tls:
并使用上面的在线资源,产生这个结构:
type AutoGenerated struct {
Servers []struct {
ServerType string `yaml:"serverType"`
ServerPort int `yaml:"serverPort"`
Auth struct {
Auth string `yaml:"auth"`
TLS interface{} `yaml:"tls"`
} `yaml:"auth"`
} `yaml:"Servers"`
}
https://play.golang.org/p/726afn_I826
如果您希望能够按名称(即映射)索引服务器配置,那么可能是这个 YAML 模式:
Servers:
production:
serverPort: 80
auth:
auth: no
tls:
test:
serverPort: 8080
auth:
auth: no
tls:
这个手工结构:
type Config struct {
Servers map[string]struct {
ServerPort int `yaml:"serverPort"`
Auth struct {
Auth string `yaml:"auth"`
TLS interface{} `yaml:"tls"`
} `yaml:"auth"`
} `yaml:"Servers"`
}
https://play.golang.org/p/Cmvo0jxfZkd
TA贡献1780条经验 获得超5个赞
看起来您想要一组服务器。您不能在一个对象下重复相同的键:
Servers:
- serverType: production
...
- serverType: test
然后更改结构以匹配此:
type Config struct {
Servers []struct {
ServerType string `yaml:"serverType"`
ServerPort int `yaml:"serverPort"`
Auth struct {
AuthType string `yaml:"auth"`
TLSKey string `yaml:"tls"`
} `yaml:"auth"`
} `yaml:"Servers"`
}
- 2 回答
- 0 关注
- 168 浏览
添加回答
举报