fmt.Printf Formatierung Tutorial und Spickzettel

yourbasic.org/golang
Buchstabenkacheln, die das Wortformat bilden
  • 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

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.