Pendakap kerinting berganda dalam struktur apabila digunakan dalam Decode(&struct{}{})

王林
Lepaskan: 2024-02-15 12:50:09
ke hadapan
545 orang telah melayarinya

在 Decode(&struct{}{}) 中使用时结构中的双大括号

Dalam PHP, kita boleh menggunakan Decode(&struct{}{}) untuk menyahkod struktur. Walau bagaimanapun, terdapat kes khas apabila kita menggunakan struktur dalam fungsi Decode, kita perlu menggunakan pendakap kerinting berganda dalam struktur. Penggunaan ini boleh mengelirukan, jadi saya akan menerangkannya secara terperinci di sini. Apabila menggunakan struktur dalam fungsi Nyahkod, pendakap kerinting berganda digunakan untuk menunjukkan permulaan struktur. Dengan cara ini, kita boleh mentakrifkan dan memulakan struktur dalam satu kenyataan, menjadikan kod lebih ringkas dan lebih mudah difahami. Oleh itu, ingat untuk memberi perhatian kepada penggunaan pendakap berganda apabila menggunakan struktur dalam fungsi Nyahkod!

Kandungan soalan

Saya mempunyai fungsi ini dalam beberapa kod. Apakah pendakap berganda dalam struct yang membantu memastikan ia bukan dua JSON? Bagaimana ia berfungsi?

func readJSON(w http.ResponseWriter,r *http.Request,data interface{}) error {
    maxBytes := 1024 * 1024 
    r.Body = http.MaxBytesReader(w,r.Body,int64(maxBytes))
    dec := json.NewDecoder(r.Body)
    dec.DisallowUnknownFields()
    err := dec.Decode(data)

    if err != nil {
        return err
    }

    err = dec.Decode(&struct{}{})
    if err != io.EOF {
        return errors.New("Body must Only contain 1 json ")
    }
    
    return nil
}
Salin selepas log masuk

Penyelesaian

Jom pecahkan:

  • struct{} ialah jenis: struct tanpa medan.
  • struct{}{} ialah nilai literal: tika baharu jenis di atas.
  • &struct{}{} ialah penunjuk kepada nilai tersurat di atas.

Dengan cuba menyahkod JSON untuk kali kedua, ia mengesahkan bahawa badan itu tidak mempunyai dokumen JSON kedua selepas yang pertama, sebagai contoh:

{
  "foo": "bar"
}
{
  "foo": "qux"
}
Salin selepas log masuk

Atas ialah kandungan terperinci Pendakap kerinting berganda dalam struktur apabila digunakan dalam Decode(&struct{}{}). 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