我有两个struct:
type ResponseQueryHotel struct {
QueryString *string `json:"queryString"`
Status string `json:"status"`
Action string `json:"action"`
RefCode string `json:"refCode"`
Vendorid string `json:"vendorid"`
SearchToken *string `json:"searchtoken"`
Data struct {
Hotels []struct {
Data ResponseQueryHotelsData `json:"data"`
} `json:"hotels"`
} `json:"data"`
}
type ResponseQueryHotelsData struct {
Hotelidvendor string `json:"hotelidvendor"`
Hotelname string `json:"hotelname"`
Hoteladdress string `json:"hoteladdress"`
Hoteldistrict string `json:"hoteldistrict"`
Hotelcity string `json:"hotelcity"`
Hotelprovince string `json:"hotelprovince"`
Hotelcountry string `json:"hotelcountry"`
Hotellat string `json:"hotellat"`
Hotellng string `json:"hotellng"`
Hotelprice string `json:"hotelprice"`
Hoteldiscountprice string `json:"hoteldiscountprice"`
Hotelphotourl string `json:"hotelphotourl"`
}
现在我需要向ResponseQueryHotel.Data.Hotels
追加元素,因为它的元素类型不是命名的名称。所以我尝试这样做:
var output models.ResponseQueryHotel
var data models.ResponseQueryHotelsData
output.Data.Hotels = append(output.Data.Hotels, data)
但我得到了这个错误:
cannot use data (variable of type models.ResponseQueryHotelsData) as struct{Data models.ResponseQueryHotelsData "json:\"data\""} value in argument to append
我应该怎么做才能将项目追加到output.Data.Hotels
(将有超过1个ResponseQueryHotelsData
要追加)。
顺便说一句,我不能改变结构(这是我的控制)。
2条答案
按热度按时间pkmbmrz71#
如果需要多次使用相同的基础类型,请定义该类型的别名:
或者,如果您只需要一次,则在适当的位置声明结构类型:
golang规范中的Assignability部分规定:
如果以下条件之一适用,则类型V的值x可分配给类型T的变量(“x可分配给T”):
*V和T具有相同的基础类型,但不是类型参数,并且V或T中至少有一个不是命名类型。
fzwojiic2#
您可以将字段Data.Hotels的类型更改为[]ResponseQueryHotelsData而不是struct。