フォーマットされたエラーにおける複数の引数の整合性の保持
カスタム バージョンのerrors.Newを実装するには、変数と引数の書式設定を可能にします。技術的な課題に直面しています。提供されたコードが示すように:
<code class="go">func NewError(format string, a ...interface{}) error { return errors.New(fmt.Sprintf(format, a)) }</code>
...a パラメーターは、メソッド呼び出し中に意図せず単一の配列にマージされ、不正な書式設定が発生します。解決策は、ソース コードにあるように、fmt.Errorf の機能をエミュレートすることです。
<code class="go">func Errorf(format string, a ...interface{}) error { return errors.New(Sprintf(format, a...)) }</code>
パラメータ リストの後に ... 演算子が続くことに注意してください。 Go では、この構文を使用すると、単一の結合された配列ではなく、個別の値として引数を渡すことができます。仕様では、この動作の概要が説明されています。
最後の引数がスライス タイプ []T に割り当て可能な場合、引数の後に ... が続く場合、その引数は ...T パラメータの値として変更されずに渡される可能性があります。 .
fmt.Errorf に見られるように ... 演算子を組み込むことにより、フォーマット中に複数の引数がそれぞれの個性を保持することが保証され、結果として望ましい動作が得られます。
<code class="go">func NewError(format string, a ...interface{}) error { return errors.New(fmt.Sprintf(format, a...)) }</code>
以上がフォーマットされたエラーで引数の整合性を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。