fmt.Errorf でフォーマットされたエラー メッセージ
初期の問題:
を構築しようとしましたfmt.Sprintf の入力パラメータと同等のerrors.Newのカスタムバージョン。ただし、この関数を実装した場合:
<code class="go">func NewError(format string, a ...interface{}) error { return errors.New(fmt.Sprintf(format, a)) }</code>
NewError() で 'a' が単独の配列パラメーターになるという問題が発生しました。その結果、fmt.Sprintf は書式文字列に引数を 1 つだけ不適切に代入することになりました。
解決策:
遭遇した障害は ... (省略記号) を関数宣言の 'a' パラメーターの後に置きます。 Go の仕様によれば、この省略により、コードが可変数の引数を正しく処理できなくなります。
fmt.Errorf to the Rescue
偶然にも、fmt.Errorf はすでに存在しています。実装する予定だった望ましい機能を備えています:
<code class="go">func Errorf(format string, a ...interface{}) error { return errors.New(Sprintf(format, a...)) }</code>
省略記号を追加すると、fmt.Errorf が 'a' を可変数の引数として巧みに解釈し、書式設定されたユーザーのニーズに巧みに対応できるようになります。エラーメッセージ。
以上がfmt.Errorf を使用して fmt.Sprintf に似たカスタム エラー関数を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。