fmt.Tutorial formatowania Printf i Ściągawka

yourbasic.org / golang
 płytki literowe tworzące format słowa
  • podstawy
    • Printf
    • Sprintf (format bez drukowania)
    • Znajdź błędy fmt w vet
  • Ściągawka
    • domyślne formaty i typ
    • liczba całkowita (wcięcie, podstawa, znak)
    • znak (cytowany, Unicode)
    • Boolean (prawda/fałsz)
    • wskaźnik (hex)
    • Float (wcięcie, precyzja, notacja naukowa)
    • string lub bajt slice (quote, indent, hex)
    • wartości specjalne

podstawy

z pakietem Go fmt możesz formatować liczby i ciągi wypełnione spacjami lub zerami, w różnych bazach i z opcjonalnymi cudzysłowami.

przesyłasz ciąg szablonu zawierający tekst, który chcesz sformatować, a także czasowniki adnotacyjne, które mówią funkcji fmt, aby sformatować końcowe argumenty.

Printf

w tym przykładzie fmt.Printf formatuje i zapisuje na standardowe wyjście:

fmt.Printf("Binary: %b\%b", 4, 5) // Prints `Binary: 1001`
  • ciąg szablonu jest "Binary: %b\%b",
  • czasownik adnotacji %b Formatuje liczbę w formacie binarnym, a
  • wartość specjalna \ jest odwrotnym ukośnikiem.

w szczególnym przypadku czasownik %%, który nie zużywa żadnego argumentu, tworzy znak procentowy:

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

Sprintf (format bez drukowania)

użyj fmt.Sprintf, aby sformatować ciąg bez drukowania:

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

Znajdź błędy fmt za pomocą vet

jeśli spróbujesz skompilować i uruchomić tę niepoprawną linię kodu

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

, przekonasz się, że program skompiluje się, a następnie wydrukuje

Binary: 100\%!b(MISSING)

aby wcześnie złapać tego typu błędy, możesz użyć polecenia vet – może ono znaleźć wywołania, których argumenty nie są zgodne z ciągiem formatowania.

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

domyślne formaty i typ

  • wartość: int64{0, 1}
Format czasownik opis
%v format domyślny
int64{0, 1} %#v Go-format składni
int64 %T typ wartości

Integer (indent, base, sign)

  • wartość: 15
Format czasownik opis
15 %d baza 10
+15 %+d zawsze Pokaż znak
␣␣15 %4d podkładka ze spacjami (Szerokość 4, Prawa)
15␣␣ %-4d podkładka ze spacjami (Szerokość 4, lewa justowana)
0015 %04d Podkładka z zerami (Szerokość 4)
1111 %b baza 2
17 %o baza 8
f %x baza 16, małe litery
F %X baza 16, Wielkie Litery
0xf %#x podstawa 16, z wiodącym 0x

znak (quoted, Unicode)

  • wartość: 65 (litera Unicode a)
Format czasownik opis
A %c znak
’A’ %q cytowany znak
U+0041 %U Unicode
U+0041 'A’ %#U Unicode ze znakiem

wartość logiczna (true/false)

użyj %t, aby sformatować wartość logiczną jako true lub false.

wskaźnik (hex)

użyj %p, aby sformatować wskaźnik w notacji podstawowej 16 z wiodącą 0x.

Float (wcięcie, precyzja, notacja naukowa)

  • wartość: 123.456
Format czasownik opis
1.234560 e+02 %e notacja naukowa
123.456000 %f punkt dziesiętny, brak wykładnika
123.46 %.2f domyślna szerokość, precyzja 2
␣␣123.46 %8.2f Szerokość 8, precyzja 2
123.456 %g wykładnik w razie potrzeby, niezbędne cyfry tylko

ciąg lub bajt slice (quote, indent, hex)

  • wartość: "café"
Format czasownik opis
kawiarnia %s zwykły ciąg
␣␣kawiarnia %6s Width 6, right justify
kawiarnia␣␣ %-6s / Width = 6 / left justify
„kawiarnia” %q cytowany ciąg
636166c3a9 %x Hex dump wartości bajtów
63 61 66 c3 a9 % x Hex zrzut ze spacjami

wartości specjalne

wartość opis
\a u+0007 alarm lub dzwonek
\b u+0008 backspace
\ u+005c backslash
\t u+0009 zakładka pozioma
\n linia zasilająca u+000A lub nowa linia
\f u+000c form feed
\r wózek u+000d return
\v zakładka pionowa u+000B

dowolne wartości mogą być zakodowane za pomocą znaków specjalnych odwrotnego ukośnika i mogą być użyte w dowolnym literale "".

istnieją cztery różne formaty:

  • \x po którym następuje dokładnie dwie cyfry szesnastkowe,
  • \ po którym następuje dokładnie trzy ósemkowe cyfry,
  • \u po którym następuje dokładnie cztery cyfry szesnastkowe,
  • \U po którym następuje dokładnie osiem cyfr szesnastkowych.

znaki specjalne \u i \U reprezentują punkty kodu Unicode.

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

Czytaj dalej

40+ praktyczne wskazówki sznurkowe

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.