- Grundlagen
- Printf
- Sprintf (Format ohne Druck)
- FMT-Fehler mit vet finden
- Spickzettel
- Standardformate und -typ
- Ganzzahl (Einzug, Basis, Vorzeichen)
- Zeichen (zitiert, Unicode)
- Boolesch (wahr / falsch)
- Zeiger (Hex)
- Float (Einzug, Genauigkeit, wissenschaftliche Notation)
- String oder Byte slice (quote, indent, hex)
- Spezielle Werte
- Grundlagen
- Printf
- Sprintf (format without printing)
- fmt-Fehler mit vet finden
- Spickzettel
- Standardformate und Typ
- Integer (Einzug, Basis, Vorzeichen)
- Zeichen (zitiert, Unicode)
- Boolean (true/false)
- Zeiger (hex)
- Float (Einzug, Präzision, wissenschaftliche Notation)
- String oder Byte Slice (quote, indent, hex)
- Besondere Werte
- Weiterführende Literatur
Grundlagen
Mit dem Paket Go fmt
können Sie Zahlen und Zeichenfolgen formatieren, die mit Leerzeichen oder Nullen aufgefüllt sind, in verschiedenen Basen und mit optionalen Anführungszeichen.
Sie senden eine Vorlagenzeichenfolge, die den zu formatierenden Text und einige Anmerkungsverben enthält, die die fmt
-Funktion anweisen, die abschließenden Argumente zu formatieren.
Printf
In diesem Beispiel formatiert und schreibt fmt.Printf
in die Standardausgabe:
fmt.Printf("Binary: %b\%b", 4, 5) // Prints `Binary: 1001`
- die Vorlagenzeichenfolge ist
"Binary: %b\%b"
, - das Annotationsverb
%b
formatiert eine Zahl in Binärform, und - der spezielle Wert
\
ist ein Backslash.
Als Sonderfall erzeugt das Verb %%
, das kein Argument verbraucht, ein Prozentzeichen:
fmt.Printf("%d %%", 50) // Prints `50 %`
Sprintf (format without printing)
Verwenden Sie fmt.Sprintf
, um eine Zeichenfolge zu formatieren, ohne sie zu drucken:
s := fmt.Sprintf("Binary: %b\%b", 4, 5) // s == `Binary: 1001`
fmt-Fehler mit vet finden
Wenn Sie versuchen, diese falsche Codezeile zu kompilieren und auszuführen
fmt.Printf("Binary: %b\%b", 4) // An argument to Printf is missing.
Sie werden feststellen, dass das Programm kompiliert und dann
Binary: 100\%!b(MISSING)
gedruckt wirdUm diese Art von Fehlern frühzeitig zu erkennen, können Sie den Befehl vet verwenden – er kann findcalls, deren Argumente nicht mit der Formatzeichenfolge übereinstimmen.
$ go vet example.goexample.go:8: missing argument for Printf("%b"): format reads arg 2, have only 1 args
Spickzettel
Standardformate und Typ
- Wert:
int64{0, 1}
Format | Verb | Beschreibung |
---|---|---|
%v |
Standardformat | |
int64{0, 1} | %#v |
Go-Syntax Format |
int64 | %T |
Der Typ des Werts |
Integer (Einzug, Basis, Vorzeichen)
- Wert:
15
Format | Verb | Beschreibung |
---|---|---|
15 | %d |
Basis 10 |
+15 | %+d |
Immer Zeichen zeigen |
␣␣15 | %4d |
Pad mit Leerzeichen (Breite 4, rechtsbündig) |
15␣␣ | %-4d |
Pad mit Leerzeichen (Breite 4, linksbündig) |
0015 | %04d |
Pad mit Nullen (Breite 4) |
1111 | %b |
Basis 2 |
17 | %o |
Basis 8 |
f | %x |
Basis 16, Kleinbuchstaben |
F | %X |
Basis 16, Großbuchstaben |
0xf | %#x |
Basis 16, mit führenden 0x |
Zeichen (zitiert, Unicode)
- Wert:
65
(Unicode-Buchstabe A)
Format | Verb | Beschreibung |
---|---|---|
A | %c |
Charakter |
‚ A‘ | %q |
Zitiertes Zeichen |
U+0041 | %U |
Unicode |
U+0041 ‚A‘ | %#U |
Unicode mit Zeichen |
Boolean (true/false)
Verwenden Sie %t
, um einen Boolean als true
oder false
zu formatieren.
Zeiger (hex)
Verwenden Sie %p
, um einen Zeiger in Basis-16-Notation mit führender 0x
zu formatieren.
Float (Einzug, Präzision, wissenschaftliche Notation)
- Wert:
123.456
Format | Verb | Beschreibung |
---|---|---|
1.234560 e+02 | %e |
Wissenschaftliche Notation |
123.456000 | %f |
Dezimalpunkt, kein Exponent |
123.46 | %.2f |
Standard breite, präzision 2 |
␣␣123.46 | %8.2f |
Breite 8, Präzision 2 |
123.456 | %g |
Exponent nach Bedarf, nur notwendige Ziffern |
String oder Byte Slice (quote, indent, hex)
- Wert:
"café"
Format | Verb | Beschreibung |
---|---|---|
cafés | %s |
Einfacher String |
␣␣ cafés | %6s |
Breite 6, rechtsbündig |
cafés␣␣ | %-6s |
Breite 6, links rechtfertigen |
“ cafés“ | %q |
String in Anführungszeichen |
Artikel-Nr. 636166c3a9 | %x |
Hex-Dump von Byte-Werten |
63 61 66 c3 a9 | % x |
Hex dump mit Leerzeichen |
Besondere Werte
Wert | Beschreibung |
---|---|
\a |
U + 0007 Alarm oder Glocke |
\b |
U+0008 Rücktaste |
\ |
U+005c Backslash |
\t |
U+0009 horizontale Lasche |
\n |
U+000A Zeilenvorschub oder Zeilenumbruch |
\f |
U+000C Formularvorschub |
\r |
U + 000D Wagen rückkehr |
\v |
U+000b vertikale Registerkarte |
Beliebige Werte können mit Backslash-Escapes codiert werden und können in jedem ""
String-Literal verwendet werden.
Es gibt vier verschiedene Formate:
-
\x
gefolgt von genau zwei hexadezimalen Ziffern, -
\
gefolgt von genau drei Oktalziffern, -
\u
gefolgt von genau vier hexadezimalen Ziffern, -
\U
gefolgt von genau acht hexadezimalen Ziffern.
Die Escapes \u
und \U
stellen Unicode-Codepunkte dar.
fmt.Println("\caf\u00e9") // Prints \café
Weiterführende Literatur
40+ praktische String-Tipps