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