Unmarshal 呼び出しをインターセプトすることで UnmarshalJSON でのスタック オーバーフローを防止する
カスタム UnmarshalJSON 実装のコンテキストでは、追加の手順を実行する必要がある場合があります。データ構造の初期化中。ただし、UnmarshalJSON 内で json.Unmarshal() を呼び出すと、JSON デコーダがカスタム実装を繰り返し検索し、無限再帰が発生するため、スタック オーバーフローが発生する可能性があります。
この問題を回避するには、基礎となるデフォルト実装を呼び出すことができます。再帰ループをトリガーせずに。方法は次のとおりです:
Type キーワードを使用して中間型を作成する:
型変換と代入:
デフォルトのアンマーシャル関数を呼び出す:
後処理 (オプション):
この手法を採用すると、新しい型には UnmarshalJSON メソッドが定義されていないため、再帰ループは中断されます。これにより、スタック オーバーフローが防止され、追加処理によるシームレスな初期化が可能になります。
以上がGo の「UnmarshalJSON」でスタック オーバーフローを防ぐには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。