l'éditeur php Banana vous présentera comment attacher à une tranche dont le type d'élément n'est pas un type nommé en golang. Dans Golang, nous pouvons utiliser la fonction append intégrée pour ajouter des éléments à une tranche, mais si le type d'élément de la tranche n'est pas un type nommé, c'est-à-dire un type anonyme, nous devons d'abord créer une tranche temporaire, puis ajoutez les éléments à la tranche temporaire, et enfin copiez ensuite les éléments de la tranche temporaire dans la tranche d'origine. Cela garantit que les données de la tranche d'origine ne sont pas perdues lors de l'ajout d'éléments. Ensuite, nous détaillerons les étapes spécifiques de ce processus.
J'ai deux structures :
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"` }
Maintenant, je dois ajouter des éléments à responsequeryhotel.data.hotels
dont le type d'élément n'est pas un nom nommé. Alors j'ai essayé ceci :
var output models.responsequeryhotel var data models.responsequeryhotelsdata output.data.hotels = append(output.data.hotels, data)
Mais j'obtiens cette erreur :
cannot use data (variable of type models.ResponseQueryHotelsData) as struct{Data models.ResponseQueryHotelsData "json:\"data\""} value in argument to append
Comment dois-je joindre des éléments à output.data.hotels
(将有超过 1 个 responsequeryhotelsdata
append).
BTW, je ne peux pas changer la structure (c'est hors de mon contrôle).
Si vous devez l'utiliser plusieurs fois, définissez un alias pour le même type sous-jacent :
type hotel = struct { data responsequeryhotelsdata `json:"data"` } hotels := []hotel{ {data: responsequeryhotelsdata{}}, {data: responsequeryhotelsdata{}}, } output.data.hotels = append(output.data.hotels, hotels...)
Ou si vous n'en avez besoin qu'une seule fois, déclarez le type struct en place :
hotels := []struct { Data ResponseQueryHotelsData `json:"data"` }{ {Data: ResponseQueryHotelsData{}}, {Data: ResponseQueryHotelsData{}}, } output.Data.Hotels = append(output.Data.Hotels, hotels...)
distributabilité de la spécification golang indique :
Une valeur x de type v est attribuable à une variable de type t ("x est attribuable à t") si l'une des conditions suivantes est vraie :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!