整数と文字列の出力に %v を使用する場合の欠点
整数と文字列の両方に %v を使用することは許可されていますが、そうではありません「fmt」パッケージで予期しない動作が発生する可能性があるため、これをお勧めします。
%d と %v の役割を理解する
カスタム フォーマッタを使用した例
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*
この例では、%v を使用していますが、MyInt の String() メソッドは String を実装するときに呼び出されます。 fmt.Stringer インターフェイスの () メソッドにより、整数にカスタム書式設定が適用されます。
%v のデフォルトの書式設定ルール
「fmt」によるパッケージのドキュメントでは、%v は次のルールを順番に使用しようとします:
潜在的な問題
%v を使用して整数を出力すると、デフォルトの書式設定が予期される %d の動作をオーバーライドする場合に混乱が生じる可能性があります。たとえば、ポインタや複素数値などの特殊な型を扱う場合、%v を使用すると予期しない出力が発生する可能性があります。
結論
%v は書式設定に柔軟性をもたらしますが、一般に、明確さを確保し、潜在的な曖昧さを避けるために、整数には %d、文字列には %s などの特定の動詞を使用することをお勧めします。
以上がGo で整数と文字列を出力するために %v の使用を避けるべきなのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。