ホームページ >バックエンド開発 >Golang >fmt.Sprintf で予期しないフィールドを処理するには?

fmt.Sprintf で予期しないフィールドを処理するには?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-31 19:05:02544ブラウズ

How to Handle Unexpected Fields in fmt.Sprintf?

fmt.Sprintf での予期しないフィールドの処理

Go プログラミングでは、fmt.Sprintf 関数を使用して文字列をフォーマットします。ただし、入力文字列に予期しないフィールドが含まれている場合に問題が発生し、パニックが発生します。

問題

次のコード スニペットを考えてみましょう。

<code class="go">package main

import "fmt"

func main() {
    tmp_str := "hello %s"
    str := fmt.Sprintf(tmp_str, "world")
    fmt.Println(str)
}</code>

この例では, tmp_str は、単一の引数を必要とするテンプレート文字列です。ただし、プログラムが (テンプレートではなく) "Hello Friends" のような完全な文字列を受け取った場合、余分な引数が存在するために fmt.Sprintf はパニックを起こします。エラー メッセージは次のようになります。

Hello Friends%!(EXTRA string=world)

解決策

この問題を処理する 1 つの方法は、テンプレート文字列で有効な %s 動詞の使用を強制することです。ユーザーは、%.0s や %.s などのプレースホルダー動詞を指定して、一致するフィールドが存在しない場合に引数が長さ 0 に切り詰められることを示すことができます。以下に例を示します:

<code class="go">tmp_str := "Hello Friends%.s"</code>

%.s を使用すると余分なフィールドが切り捨てられ、目的の出力が得られます:

Hello Friends

以上がfmt.Sprintf で予期しないフィールドを処理するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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