ホームページ > バックエンド開発 > Golang > fmt.Errorf を使用して fmt.Sprintf に似たカスタム エラー関数を作成するにはどうすればよいですか?

fmt.Errorf を使用して fmt.Sprintf に似たカスタム エラー関数を作成するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-05 10:19:02
オリジナル
1073 人が閲覧しました

How can I create a custom error function similar to fmt.Sprintf using fmt.Errorf?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート