在 PHP 中,我們可以用 Decode(&struct{}{}) 來解碼一個結構體。然而,有一種特殊情況是當我們在 Decode 函數中使用結構體時,我們需要在結構體中使用雙大括號。這種用法可能會讓人感到困惑,因此在這裡我將為大家詳細解釋一下這個問題。在 Decode 函數中使用結構體時,雙大括號的作用是用來表示結構體的初始化。透過這種方式,我們可以在一個語句中定義並初始化一個結構體,使程式碼更加簡潔和易於理解。所以,記得在 Decode 函數中使用結構體時,要注意雙大括號的使用方式哦!
我在一些程式碼中有這個函數。 struct 中有助於確定它不是兩個 JSON 的雙大括號是什麼?它是如何運作的?
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 }
讓我們分解:
struct{}
是一種類型:沒有欄位的結構。 struct{}{}
是一個文字值:上述類型的新實例。 &struct{}{}
是指向上述文字值的指標。 透過嘗試第二次解碼 JSON,它確認正文在第一個 JSON 文檔之後沒有第二個 JSON 文檔,例如:
{ "foo": "bar" } { "foo": "qux" }
以上是在 Decode(&struct{}{}) 中使用時結構中的雙大括號的詳細內容。更多資訊請關注PHP中文網其他相關文章!