golang 缺少 len 参数

如何使行成为 map[string]map[string]interface{}


不能在赋值中使用 s.ID(字符串类型)作为 map[string]interface {} 类型


var row = make(map[string]map[string]interface{})

列表服务器


func ListServers() (map[string]map[string]interface{}, error) {

listOptions := servers.ListOpts{}

pager := servers.List(GetClientCompute(), listOptions)

err := pager.EachPage(func(page pagination.Page) (bool, error) {

    serverList, err := servers.ExtractServers(page)

    if err != nil {

        fmt.Println(err)

    }

    for _, s := range serverList {

        row["ID"] = s.ID                                 <---- error is here

        row["Name"] = s.Name                                 <---- error is here

        if s.Addresses["public"] != nil {

            for _, i := range s.Addresses["public"].([]interface{}) {

                temp := i.(map[string]interface{})

                if temp["version"].(float64) == 4 {

                    row["IP"] = temp["addr"]

                }

            }

        }

        t, _ := time.Parse(time.RFC3339, s.Created)

        row["Flavor"] = s.Flavor

        row["Created"] = time.Now().Sub(t)                                 <---- error is here

        row["Status"] = s.Status                                 <---- error is here

    }

    return false, nil

})

// fmt.Println(lists)

return row, err

}


ibeautiful
浏览 154回答 1
1回答

鸿蒙传说

是row的 SLICE map[string]interface{}。像这样初始化切片时需要提供长度:row := make([]map[string]interface{}, 0)切片的索引必须是整数,这就是您遇到评论中提到的第二个问题的原因。让我们假设serverList是一片。您的代码可以修改为:rows := make([]map[string]interface{}, 0)&nbsp; &nbsp;// create a slice// ... codes omitted&nbsp; &nbsp; for _, s := range serverList {&nbsp; &nbsp; &nbsp; &nbsp; row := make(map[string]interface{}) // create an item&nbsp; &nbsp; &nbsp; &nbsp; row["ID"] = s.ID&nbsp; &nbsp; &nbsp; &nbsp; row["Name"] = s.Name&nbsp; &nbsp; &nbsp; &nbsp; // ... codes omitted&nbsp; &nbsp; &nbsp; &nbsp; row["Flavor"] = s.Flavor&nbsp; &nbsp; &nbsp; &nbsp; row["Created"] = time.Now().Sub(t)&nbsp; &nbsp; &nbsp; &nbsp; row["Status"] = s.Status&nbsp; &nbsp; &nbsp; &nbsp; rows = append(rows, row) // append the item to the slice&nbsp; &nbsp; }return rows, err
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go