PHP では、Decode(&struct{}{}) を使用して構造体をデコードできます。ただし、Decode 関数で構造体を使用する場合は特殊な場合があり、構造体で二重中括弧を使用する必要があります。この使い方はわかりにくいかもしれないので、ここで詳しく説明します。 Decode 関数で構造体を使用する場合、二重中括弧は構造体の初期化を示すために使用されます。このようにして、1 つのステートメントで構造の定義と初期化を行うことができるため、コードがより簡潔で理解しやすくなります。したがって、Decode 関数で構造体を使用するときは、二重中括弧の使用に注意することを忘れないでください。
コードの中にこの関数があります。 2 つの 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 ドキュメントの後に 2 番目の JSON ドキュメントがないことが確認されます。次に例を示します。
リーリー以上がDecode(&struct{}{}) で使用される場合の構造内の二重中括弧の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。