fmt.Printf formatering handledning och fusklapp

yourbasic.org / golang
 brevplattor som bildar ordformatet
  • grunderna
    • Printf
    • Sprintf (format utan utskrift)
    • hitta fmt-fel med vet
  • fusklapp
    • standardformat och typ
    • heltal (strecksats, bas, tecken)
    • tecken (citerad, Unicode)
    • Boolesk (sant/falskt)
    • pekare (hex)
    • Float (strecksats, precision, vetenskaplig notation)
    • sträng eller byte skiva (citat, strecksats, Hex)
    • specialvärden

grunderna

med GO fmt packageyou kan formatera siffror och strängar vadderade med mellanslag eller nollor,i olika baser, och med valfria citat.

du skickar in en Mallsträng som innehåller texten du vill formatera plus några annoteringsverb som anger funktionen fmt hur du formaterar de efterföljande argumenten.

Printf

i det här exemplet formaterar och skriver fmt.Printf till standardutmatning:

fmt.Printf("Binary: %b\%b", 4, 5) // Prints `Binary: 1001`
  • mallsträngen är "Binary: %b\%b",
  • annoteringsverbet %b formaterar ett tal i binärt, och
  • specialvärdet \ är ett backslash.

som ett speciellt fall ger verbet %%, som inte förbrukar något argument, ett procenttecken:

fmt.Printf("%d %%", 50) // Prints `50 %`

Sprintf (format utan utskrift)

använd fmt.Sprintf för att formatera en sträng utan att skriva ut den:

s := fmt.Sprintf("Binary: %b\%b", 4, 5) // s == `Binary: 1001`

hitta FMT-fel med vet

om du försöker kompilera och köra den här felaktiga kodrad

fmt.Printf("Binary: %b\%b", 4) // An argument to Printf is missing.

du kommer att upptäcka att programmet kommer att kompilera och sedan skriva ut

Binary: 100\%!b(MISSING)

för att fånga denna typ av fel tidigt kan du användavet – kommandot-det kan hittasamtal vars argument inte stämmer överens med formatsträngen.

$ go vet example.goexample.go:8: missing argument for Printf("%b"): format reads arg 2, have only 1 args

fusklapp

standardformat och typ

  • värde: int64{0, 1}
Format Verb beskrivning
%v standardformat
int64{0, 1} %#v Go-syntaxformat
int64 %T typ av värde

heltal (strecksats, bas, tecken)

  • värde: 15
Format Verb beskrivning
15 %d bas 10
+15 %+d Visa alltid tecken
␣␣15 %4d Pad med mellanslag (bredd 4, rätt motiverad)
15␣␣ %-4d Pad med mellanslag (bredd 4, vänster motiverad)
0015 %04d Pad med nollor (bredd 4)
1111 %b bas 2
17 %o bas 8
f %x bas 16, gemener
F %X bas 16, versaler
0xf %#x bas 16, med ledande 0x

karaktär (citerad, Unicode)

  • värde: 65(Unicode bokstaven A)
Format Verb beskrivning
A %c karaktär
’A’ %q citerad karaktär
U+0041 %U Unicode
U + 0041 ’A’ %#U Unicode med tecken

Boolean (true/false)

använd %t för att formatera en boolean som trueeller false.

pekare (hex)

använd %p för att formatera en pekare i BAS 16 notation med ledande 0x.

Float (strecksats, precision, vetenskaplig notation)

  • värde: 123.456
Format Verb beskrivning
1.234560 e+02 %e vetenskaplig notation
123.456000 %f Decimal, ingen exponent
123.46 %.2f standard bredd, precision 2
␣␣123.46 %8.2f bredd 8, precision 2
123.456 %g Exponent efter behov, endast nödvändiga siffror

sträng eller byte skiva (citat, strecksats, hex)

  • värde: "café"
Format Verbet Beskrivning
café %s Vanlig sträng
␣␣café %6s Bredd 6, högerjusterar
café␣␣ %-6s Bredd 6, superscript
”café” %q sträng
636166c3a9 %x Hex dump av byte-värden
63 61 66 c3 a9 % x Hex dumpa med mellanslag

särskilda värden

värde beskrivning
\a u + 0007 alert eller klocka
\b u + 0008 backspace
\ u + 005c backslash
\t u + 0009 horisontell flik
\n u + 000A linjematning eller ny linje
\f u + 000C formulärmatning
\r u + 000D vagn tillbaka
\v u + 000b vertikal flik

godtyckliga värden kan kodas med backslash escapes ochkan användas i någon "" sträng bokstavlig.

det finns fyra olika format:

  • \x följt av exakt två hexadecimala siffror,
  • \ följt av exakt tre oktala siffror,
  • \u följt av exakt fyra hexadecimala siffror,
  • \U följt av exakt åtta hexadecimala siffror.

flyktningarna \u och \U representerar Unicode-Kodpunkter.

fmt.Println("\caf\u00e9") // Prints \café

vidare läsning

40+ praktiska strängtips

Lämna ett svar

Din e-postadress kommer inte publiceras.