提供されたコードでは、DataResponse 構造体のインスタンスを作成しようとするとエラーが発生し、それをパラメータとして JSON 関数に渡します。コンパイラは、必要な引数が指定されているにもかかわらず、指定された引数が多すぎると報告します。
DataResponse 構造体は次のように定義されています。
<code class="go">type DataResponse struct { Status int `json:"status"` Data interface{} `json:"data"` }</code>
これは 2 つのパラメータを取ります: int 型のステータス
GetUser 関数では、DataResponse のインスタンスが次のように作成されます。
<code class="go">resp := DataResponse(200, user)</code>
ただし、この構文は正しくありません。中括弧構文を使用して構造体を初期化する正しい方法は次のとおりです。
<code class="go">resp := DataResponse{200, user}</code>
中括弧は、新しい構造体を構築していることを示し、各フィールド名の後に指定された値が対応するフィールドに割り当てられます。
resp 変数が正しく初期化されると、パラメータとして JSON に渡すことができます。 function:
<code class="go">JSON(rw, resp)</code>
これにより、DataResponse 構造体に提供される引数が多すぎる問題が解決され、プログラムが JSON シリアル化用の構造体を適切に構築して使用できるようになりました。
以上が必要なパラメータをすべて指定しているにもかかわらず、DataResponse で「引数が多すぎます」というコンパイラ エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。