%v zum Drucken verschiedener Datentypen verwenden
Es kommt häufig vor, dass wir sowohl Ganzzahlen (%d) als auch drucken müssen Zeichenfolgen (%s) mit printf. Man könnte sich fragen, ob es möglich ist, %v für beide Typen zu verwenden. Obwohl dies akzeptabel ist, kann die wahllose Verwendung von %v zu unerwarteten Ergebnissen führen.
Standardformatierung von %v
fmt.Printf("%v") ist ein generisches Format Platzhalter, der den Wert im „Standard“-Format druckt, das durch Angabe von Format-Flags überschrieben werden kann. Für Ganzzahlen verwendet %v standardmäßig die Basis-10-Formatierung (%d). Allerdings greift %v für nicht-primitive Typen auf die fmt.Stringer-Schnittstelle zurück.
Betrachten Sie das folgende Beispiel:
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) }
Ausgabe:
2 *2*
In In diesem Fall respektiert %v die Implementierung der String()-Methode in MyInt und gibt „2“ aus, wodurch der Standardwert überschrieben wird Ganzzahlformatierung.
Überlegungen
Die Verwendung von %v sowohl für Ganzzahlen als auch für Zeichenfolgen ist technisch gesehen nicht falsch. Dies kann jedoch zu einer Formatierung führen, die möglicherweise nicht in allen Situationen wünschenswert ist. Es wird empfohlen, den expliziten Formatbezeichner (%d für Ganzzahlen und %s für Zeichenfolgen) zu verwenden, um eine konsistente und vorhersehbare Formatierung sicherzustellen.
Das obige ist der detaillierte Inhalt vonKann %v sowohl Ganzzahlen als auch Strings in Gos „fmt.Printf' drucken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!