%v は Go の `fmt.Printf` で整数と文字列の両方を出力できますか?

Susan Sarandon
リリース: 2024-11-14 09:32:02
オリジナル
980 人が閲覧しました

Can %v Print Both Integers and Strings in Go's `fmt.Printf`?

%v を使用して異なるデータ型を出力する

整数 (%d) と整数 (%d) の両方を出力する必要がある状況がよく発生します。 printf を使用して文字列 (%s) を取得します。両方のタイプに %v を使用できるのではないかと疑問に思う人もいるかもしれません。許容されますが、%v を無差別に使用すると、予期しない結果が生じる可能性があります。

%v のデフォルトの形式

fmt.Printf("%v") はジェネリックです「デフォルト」形式を使用して値を出力するプレースホルダー。これは形式フラグを指定することで上書きできます。整数の場合、%v のデフォルトは 10 進数 (%d) フォーマットです。ただし、非プリミティブ型の場合、%v は fmt.Stringer インターフェイスにフォールバックします。

次の例を考えてみましょう。

type MyInt int

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

func main() {
    var mi MyInt = 2
    fmt.Printf("%d %v", mi, mi)
}
ログイン後にコピー

出力:

2 *2*
ログイン後にコピー

Inこの場合、%v は MyInt の String() メソッドの実装を尊重し、デフォルトの整数書式設定をオーバーライドして "2" を出力します。

考慮事項

整数と文字列の両方に %v を使用することは、技術的には間違いではありません。ただし、すべての状況において望ましくないフォーマットになる可能性があります。一貫性のある予測可能な書式設定を保証するために、明示的な書式指定子 (整数の場合は %d、文字列の場合は %s) を使用することをお勧めします。

以上が%v は Go の `fmt.Printf` で整数と文字列の両方を出力できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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