Bagaimana untuk menambah pada kepingan yang jenis elemennya bukan jenis bernama dalam golang

WBOY
Lepaskan: 2024-02-09 10:50:19
ke hadapan
1135 orang telah melayarinya

Bagaimana untuk menambah pada kepingan yang jenis elemennya bukan jenis bernama dalam golang

editor php Banana akan memperkenalkan anda cara melekat pada kepingan yang jenis elemennya bukan jenis bernama dalam golang. Di Golang, kita boleh menggunakan fungsi tambah terbina dalam untuk menambahkan elemen pada hirisan, tetapi jika jenis elemen hirisan bukan jenis yang dinamakan, iaitu jenis tanpa nama, kita perlu mencipta hirisan sementara dahulu, kemudian tambahkan elemen pada kepingan sementara, dan akhir sekali Kemudian salin elemen kepingan sementara kembali ke kepingan asal. Melakukan ini memastikan bahawa data kepingan asal tidak hilang semasa menambahkan elemen. Seterusnya, kami akan memperincikan langkah-langkah khusus proses ini.

Kandungan soalan

Saya mempunyai dua struktur:

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"`
}
Salin selepas log masuk

Kini saya perlu menambahkan item pada responsequeryhotel.data.hotels yang jenis elemennya bukan nama yang dinamakan. Jadi saya mencuba ini:

var output models.responsequeryhotel

var data models.responsequeryhotelsdata
output.data.hotels = append(output.data.hotels, data)
Salin selepas log masuk

Tetapi saya mendapat ralat ini:

cannot use data (variable of type models.ResponseQueryHotelsData) as struct{Data models.ResponseQueryHotelsData "json:\"data\""} value in argument to append
Salin selepas log masuk

Bagaimana saya harus melampirkan item pada output.data.hotels (将有超过 1 个 responsequeryhotelsdata tambah).

BTW, saya tidak boleh mengubah struktur (itu di luar kawalan saya).

Penyelesaian

Jika anda perlu menggunakannya beberapa kali, tentukan alias untuk jenis asas yang sama:

type hotel = struct {
    data responsequeryhotelsdata `json:"data"`
}
hotels := []hotel{
    {data: responsequeryhotelsdata{}},
    {data: responsequeryhotelsdata{}},
}

output.data.hotels = append(output.data.hotels, hotels...)
Salin selepas log masuk

Atau jika anda hanya memerlukannya sekali, isytiharkan jenis struct di tempatnya:

hotels := []struct {
    Data ResponseQueryHotelsData `json:"data"`
}{
    {Data: ResponseQueryHotelsData{}},
    {Data: ResponseQueryHotelsData{}},
}

output.Data.Hotels = append(output.Data.Hotels, hotels...)
Salin selepas log masuk
Bahagian

kebolehdistribusian dalam spesifikasi golang menyatakan:

Nilai x jenis v boleh diserahkan kepada pembolehubah jenis t ("x boleh diserahkan kepada t") jika salah satu daripada syarat berikut adalah benar:

  • v adalah sama dengan t.
  • v dan t mempunyai jenis asas yang sama, tetapi bukan parameter jenis, dan sekurang-kurangnya satu daripada v atau t bukan jenis yang dinamakan.
  • v dan t ialah jenis saluran dengan jenis elemen yang sama, v ialah saluran dwiarah dan sekurang-kurangnya satu daripada v atau t bukan jenis yang dinamakan.
  • t ialah jenis antara muka tetapi bukan parameter jenis, dan x melaksanakan t.
  • x ialah pengecam yang diisytiharkan nil dan t ialah penunjuk, fungsi, kepingan, peta, saluran atau jenis antara muka, tetapi bukan parameter jenis.
  • x ialah pemalar tidak bertaip yang boleh diwakili oleh nilai jenis t.

Atas ialah kandungan terperinci Bagaimana untuk menambah pada kepingan yang jenis elemennya bukan jenis bernama dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!