Heim >Backend-Entwicklung >Golang >So hängen Sie an ein Slice an, dessen Elementtyp kein benannter Typ in Golang ist
Der PHP-Editor Banana zeigt Ihnen, wie Sie an ein Slice anhängen, dessen Elementtyp kein benannter Typ in Golang ist. In Golang können wir die integrierte Append-Funktion verwenden, um Elemente an ein Slice anzuhängen. Wenn der Elementtyp des Slice jedoch kein benannter Typ, also ein anonymer Typ, ist, müssen wir zunächst ein temporäres Slice erstellen Hängen Sie die Elemente an den temporären Slice an und kopieren Sie schließlich die Elemente des temporären Slice zurück in den ursprünglichen Slice. Dadurch wird sichergestellt, dass die Daten des ursprünglichen Slice beim Anhängen von Elementen nicht verloren gehen. Als nächstes werden wir die spezifischen Schritte dieses Prozesses detailliert beschreiben.
Ich habe zwei Strukturen:
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"` }
Jetzt muss ich Elemente an responsequeryhotel.data.hotels
anhängen, deren Elementtyp kein benannter Name ist. Also habe ich Folgendes versucht:
var output models.responsequeryhotel var data models.responsequeryhotelsdata output.data.hotels = append(output.data.hotels, data)
Aber ich bekomme diesen Fehler:
cannot use data (variable of type models.ResponseQueryHotelsData) as struct{Data models.ResponseQueryHotelsData "json:\"data\""} value in argument to append
Wie soll ich Elemente anhängen, um output.data.hotels
(将有超过 1 个 responsequeryhotelsdata
anzuhängen).
Übrigens kann ich die Struktur nicht ändern (sie liegt außerhalb meiner Kontrolle).
Wenn Sie es mehrmals verwenden müssen, definieren Sie einen Alias für denselben zugrunde liegenden Typ:
type hotel = struct { data responsequeryhotelsdata `json:"data"` } hotels := []hotel{ {data: responsequeryhotelsdata{}}, {data: responsequeryhotelsdata{}}, } output.data.hotels = append(output.data.hotels, hotels...)
Oder wenn Sie es nur einmal benötigen, deklarieren Sie den Strukturtyp an Ort und Stelle:
hotels := []struct { Data ResponseQueryHotelsData `json:"data"` }{ {Data: ResponseQueryHotelsData{}}, {Data: ResponseQueryHotelsData{}}, } output.Data.Hotels = append(output.Data.Hotels, hotels...)Im Abschnitt „Verteilbarkeit“ der
Golang-Spezifikation heißt es: Ein Wert x vom Typ v ist einer Variablen vom Typ t zuweisbar („x ist t zuweisbar“), wenn eine der folgenden Bedingungen zutrifft:
v ist dasselbe wie t.
Das obige ist der detaillierte Inhalt vonSo hängen Sie an ein Slice an, dessen Elementtyp kein benannter Typ in Golang ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!