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!
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 }
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" }
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!