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 關注
- 194 瀏覽
添加回答
舉報