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

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

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

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

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