ホームページ >バックエンド開発 >Golang >fmt.Sprintf と互換性のある構文をerrors.Newで使用するにはどうすればよいですか?

fmt.Sprintf と互換性のある構文をerrors.Newで使用するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-05 06:00:03899ブラウズ

How can I use fmt.Sprintf-compatible syntax with errors.New?

fmt.Sprintf 互換構文によるフォーマットされたエラー

エラーのバージョンを提供します。fmt.Sprintf のようなパラメーターを受け入れる Newカスタム関数は次のように定義できます:

<code class="go">func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a))
}</code>

ただし、この実装では、可変長引数 a が単一の配列パラメーターとして扱われるという問題が発生し、書式設定で問題が発生します。

解決するにはこのため、 a が可変数の引数として解釈されるようにする必要があります。これは、3 つのドット表記 ... を利用して、fmt.Sprintf が a 引数の可変個引数の性質を確実に認識するようにすることで実現できます。

<code class="go">func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a...))
}</code>

a 引数に 3 つのドットを追加することで、 、カスタム NewError 関数は、fmt.Sprintf 互換の構文を使用してエラー メッセージを正しくフォーマットできるようになりました。

以上がfmt.Sprintf と互換性のある構文をerrors.Newで使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。