ホームページ >バックエンド開発 >Golang >Go での印刷に `%v` を使用する必要があるのはどのような場合ですか?

Go での印刷に `%v` を使用する必要があるのはどのような場合ですか?

DDD
DDDオリジナル
2024-11-26 09:09:08442ブラウズ

When Should You Use `%v` for Printing in Go?

印刷に %v を使用する: 考慮すべき潜在的な問題

%v 動詞を使用すると、整数 (%d) と文字列の両方を印刷できます。 (%s)。意図しないフォーマットを避けるために、その使用方法を慎重に検討する必要があります。

デフォルト形式と特定の形式

fmt パッケージに値を数値 (基数 10) として出力するように指示する %d 動詞とは異なり、 %v 動詞はデフォルトの形式を使用します。このデフォルト形式は、カスタム型の fmt.Stringer インターフェイス (String() 文字列メソッドを使用) を実装することでオーバーライドできます。

次のコードを考えてみましょう。 fmt.Stringer を実装するカスタム タイプ MyInt を使用するインターフェイス:

type MyInt int

func (mi MyInt) String() string {
    return fmt.Sprintf("*%d*", int(mi))
}

func main() {
    var mi MyInt = 2
    fmt.Printf("%d %v", mi, mi)
}

出力:

2 *2*

%v を使用する場合、fmt パッケージは値が fmt.Stringer を実装しているかどうかを確認し、その String() を呼び出します。方法。これにより、値はオーバーライドされた形式 (「2」ではなく「2」) で表示されます。

形式規則

fmtパッケージは、使用時に特定の一連の書式設定ルールに従います。 %v:

  1. It检查接口实现:

    • reflect.Value:
    • Formatter: 独自の形式化を使用します。
    • GoStringer(#v あり): GoStringer メソッドを使用します。
  2. 文字列()メソッド:String() 文字列が発生した場合、その値は文字列に変換されます。
  3. Error メソッド:エラー インターフェイスが発生した場合、Error を使用します。

結論

印刷に常に %v を使用することは技術的には可能ですが、一般的には特定の動詞を使用することをお勧めします。整数と文字列の %d と %s のように。型が特定のインターフェイス、特に fmt.Stringer.

を実装している場合、%v を使用すると、予期しない書式設定動作が発生する可能性があります。

以上がGo での印刷に `%v` を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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