我在尝试将地图添加到界面时收到以下错误:
无效操作:msgs [“Application”] [“instance-id”](类型interface {}不支持索引)
申请:
resultChannel := make(chan map[string]interface{})
clients := make(map[string][]map[string]interface{})
go func(clients map[string][]map[string]interface{}){
for {
msgs := <- resultChannel
url := "http://xxxxxx/results/"+msgs["instance-id"].(string)
res,err := http.Get(url)
if err != nil{
panic(err.Error())
}
body,err := ioutil.ReadAll(res.Body)
if err != nil{
panic(err.Error())
}
s, err := getResults([]byte(body))
for i := range s {
clientResults := map[string]interface{}{
s[i].Check.Name:s[i].Status,
}
clients[msgs["Application"]["instance-id"]["checks"]]=append(clients[msgs["Application"]["instance-id"]["checks"]],clientResults)
}
}
}(clients)
for i := range s{
if len(s[i].Application) > 0{
clientMap := map[string]interface{}{
"instance-id":s[i].Name,
"Division":s[i].Division,
"Status":2,
"Application":s[i].Application,
"checks":make(map[string]interface{}),
}
clients[s[i].Application]=append(clients[s[i].Application],clientMap)
resultChannel <- clientMap
}
}
我不确定处理此类案件的最佳方法是什么。最后我需要有以下结构:
[
application_name[instance-id:xxxxx Division:xxxxx Status:2 Application:fulfilment checks:[xxxxx:0,yyyy:1]]
application_name[instance-id:xxxxx Division:xxxxx Status:2 Application:fulfilment checks:[xxxxx:0,yyyy:1]]
]
答案 0 :(得分:0)
创建一个结构类型来表示数据 并在地图数据类型中使用该结构而不是接口{}。在这种情况下,无需使用接口{}。
例如:
type Client struct {
InstanceId string
Division string
Status int
Application string
Checks map[string]int
}