Doppelte geschweifte Klammern in Strukturen bei Verwendung in Decode(&struct{}{})

王林
Freigeben: 2024-02-15 12:50:09
nach vorne
539 Leute haben es durchsucht

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

In PHP können wir Decode(&struct{}{}) verwenden, um eine Struktur zu dekodieren. Es gibt jedoch einen Sonderfall, wenn wir eine Struktur in der Dekodierfunktion verwenden. Wir müssen in der Struktur doppelte geschweifte Klammern verwenden. Diese Verwendung kann verwirrend sein, daher erkläre ich sie hier ausführlich. Bei Verwendung einer Struktur in der Dekodierfunktion werden die doppelten geschweiften Klammern verwendet, um die Initialisierung der Struktur anzuzeigen. Auf diese Weise können wir eine Struktur in einer Anweisung definieren und initialisieren, wodurch der Code prägnanter und verständlicher wird. Denken Sie daher daran, bei der Verwendung von Strukturen in der Decode-Funktion auf die Verwendung doppelter Klammern zu achten!

Frageninhalt

Ich habe diese Funktion in einem Code. Welche doppelten Klammern in der Struktur helfen sicherzustellen, dass es sich nicht um zwei JSONs handelt? Wie funktioniert es?

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
}
Nach dem Login kopieren

Lösung

Lassen Sie es uns aufschlüsseln:

  • struct{} ist ein Typ: eine Struktur ohne Felder.
  • struct{}{} ist ein Literalwert: eine neue Instanz des oben genannten Typs.
  • &struct{}{} ist ein Hinweis auf den obigen Literalwert.

Durch den Versuch, das JSON ein zweites Mal zu dekodieren, wird bestätigt, dass der Text nach dem ersten kein zweites JSON-Dokument enthält, zum Beispiel:

{
  "foo": "bar"
}
{
  "foo": "qux"
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDoppelte geschweifte Klammern in Strukturen bei Verwendung in Decode(&struct{}{}). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage