エラー処理を強化するために、ユーザーはエラーのカスタマイズされたバージョンの作成を求める場合があります。新規fmt.Sprintf の動作を模倣する、複数の引数を受け入れる関数。試みは行われてきましたが、カスタム関数内の変数引数を正しく解釈する際に課題が生じます。この記事では、解決策を検討し、堅牢なエラー フォーマット メカニズムの実装に関するガイダンスを提供します。
そのような試みの 1 つは、次のような関数の定義を含みます。
<code class="go">func NewError(format string, a ...interface{}) error { return errors.New(fmt.Sprintf(format, a)) }</code>
ただし、このアプローチは、次のことを試みる場合には不十分です。変数引数を fmt.Sprintf に渡すと、引数が単一の配列として扱われます。この問題を解決するには、以下の修正コードに示すように、カスタム関数の変数引数 (a) の後に ... 演算子を使用することが不可欠です。
<code class="go">func NewError(format string, a ...interface{}) error { return errors.New(fmt.Sprintf(format, a...)) }</code>
... を使用することで、演算子、fmt.Sprintf は変数引数を正しく解釈し、それに応じて文字列をフォーマットできます。これにより、ユーザーは fmt.Sprintf の強力な書式設定機能を活用するカスタム エラー書式設定関数を作成できるようになります。
以上がGo で変数引数を含むエラーを正しくフォーマットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。