Podczas pisania kodu w Go, formatowanie ciągów jest bardzo przydatne w wielu sytuacjach. Możesz analizować dane wejściowe lub tworzyć bardziej złożone dane wyjściowe niż zwykłe konkatenacje. Być może pracujesz z typami innymi niż zwykłe ciągi.

Formatowanie ciągów w Go wykorzystuje znany proces i składnię funkcji printf, z której korzystają również języki od Javy do Haskella.

Go udostępnia różne metody formatowania ciągów w fmt pakiet. Możesz użyć funkcji i czasowników do formatowania ciągu w zależności od operacji lub danych wejściowych, które chcesz sformatować.

Formatowanie ciągów w Go

Funkcje w pakiecie fmt są podobne do odpowiedników, np. funkcja printf w bash lub C. Go wywodzi swoje czasowniki formatujące z języka C.

Używasz czasowniki formatujące ciąg jako symbole zastępcze dla wartości zmiennych w ciągu zawierającym. Następnie możesz przekazać ten ciąg formatujący do funkcji, takiej jak Printf, wraz z wartościami odpowiadającymi tym symbolom zastępczym.

Nie możesz używać czasowników formatujących ciąg znaków z

instagram viewer
Wydrukować oraz Println metody. Możesz ich używać za pomocą metod takich jak Printf oraz Sprintf.

fmt. Println("To jest test %v", 90)
fmt. Printf("To jest test %v", 90)

The %v verb drukuje dowolną wartość w swoim domyślnym formacie. The Println metoda nie rozpoznaje czasowników i wypisuje wszystkie otrzymane argumenty. The Printf oraz Sprintf obie funkcje formatują pierwszy argument ciągu, który im przekazujesz.

Funkcje formatowania ciągów w pakiecie fmt

Formatowanie ciągów w język programowania Go wymaga użycia funkcji formatowania ciągu i czasownika. Funkcja zwraca sformatowany ciąg, a czasowniki są symbolami zastępczymi danych wejściowych ciągu.

The Printf Metoda formatuje dane wejściowe zgodnie ze specyfikatorem formatu i zwraca liczbę zapisanych bajtów lub błędów.

fmt. Printf("To jest test %v", 90)

Konwencjonalnie nie musisz martwić się błędami podczas korzystania z Printf metoda.

The Sprintf metoda formatuje zgodnie z określonym formatem i zwraca wynik jako ciąg.

var wynik = fmt. Sprintf("To jest test %v", 90)

The Fprintf metoda formatuje ciąg i zapisuje go do pisarza (metody implementujące ja. Pisarz interfejs)

// zapis danych na standardowe wyjście
wynik, błąd = fmt. Fprintf (pisarz, "To jest test %v", 90)

The Fscanf metoda skanuje z czytnika i formatuje zgodnie z określonym formatem.

var Brać strunowy

// odczytaj dane z podanego ciągu
readString := ciągi. NewReader("To jest test")

przeczytaj, błąd := fmt. Fscanf (czytnik, "%v", &take)

W tym przypadku Fscanf dekoduje ciąg z czytnika do Brać zmienna, a czytać zmienna przechowuje wynik formatu.

Czasowniki formatujące ciągi

Go udostępnia wiele czasowników formatujących, których można używać wraz z funkcjami formatowania ciągów.

Istnieją ogólne czasowniki formatujące ciągi, takie jak %v czasownik w przykładach funkcji formatowania ciągu. Za pomocą ogólnych czasowników formatujących ciąg można sformatować dowolny typ danych.

Możesz użyć %#v czasownik do wyprowadzenia dowolnej wartości, the %+v dla struktur, %T czasownik dla typu dowolnej wartości, a %% czasownik bez wartości.

rodzaj każdy struktura { 
Nazwa strunowy
wiek int
isLoggedIn głupota
}

var instancja = dowolna {
imię: "Jan Kowalski",
wiek: 34,
jest zalogowany: PRAWDA,
}

var wynik = fmt. Sprintf("To jest struktura przykład formatowania %+v", instancja)
fmt. Drukujln (wynik)

The wynik zmienna przechowuje sformatowany ciąg tworzonej struktury. Jeśli go wydrukujesz, powinien wyglądać mniej więcej tak:

To jest przykład formatowania struktury {name: John Doe wiek: 34 isLoggedIn:PRAWDA}

Istnieją czasowniki służące do formatowania określonych typów danych natywnych Go, w tym kanałów i wskaźników.

Czasownik Funkcjonalność
%t wartości logiczne.
%d int, int8 itd.
%d, %#x jeśli wydrukowano z %#v uint, uint8 itd.
%g float32, complex64 itd.
%s strunowy.
%p chan.
%P wskaźnik.

Upewnij się, że nie popełnisz błędów z czasownikami, ponieważ są one rozróżniane wielkością liter, tak jak Chan oraz wskaźnik czasowniki.

Formatowanie liczb całkowitych i zmiennoprzecinkowych

Istnieją czasowniki formatujące ciągi do formatowania liczb całkowitych w różne bazy. Możesz użyć dowolnego z tych czasowników do formatowania liczb całkowitych

Czasownik Funkcjonalność
%b podstawa 2
%c znak reprezentowany przez odpowiedni punkt kodu Unicode.
%d baza 10.
%o podstawa 8.
%O podstawa 8 z prefiksem 0o.
%q literał znakowy w pojedynczym cudzysłowie bezpiecznie uciekł za pomocą składni Go.
%x podstawa 16, małymi literami dla a-f.
%X podstawa 16, z dużymi literami dla A-F.
%U Format Unicode: U + 1234; tak samo jak „U+%04X”.

Na przykład możesz sformatować liczbę całkowitą za pomocą %d czasownik:

var wynik = fmt. Sprintf("To jest przykład formatowania liczb całkowitych %d", 90)
fmt. Drukujln (wynik)

To są czasowniki służące do formatowania liczb zmiennoprzecinkowych.

Czasownik Funkcjonalność
%b notacja naukowa bez dziesiętna z wykładnikiem potęgi dwójki, na wzór strconv. FormatFloat z formatem „b”, np. -123456p-78
%mi notacja naukowa, m.in. -1,234456e+78
%MI przecinek dziesiętny, ale bez wykładnika, np. 123,456
%f przecinek dziesiętny, ale bez wykładnika, np. 123,456
%F synonim %f.
%g %e dla dużych wykładników, %f w przeciwnym razie. Precyzja poniżej.
%G %E dla dużych wykładników, %F w przeciwnym razie
%x notacja szesnastkowa (z potęgą dziesiętną dwóch wykładników), np. -0x1,23abcp+20.
%X zapis szesnastkowy z dużymi literami, np. -0X1,23ABCP+20.

Oto przykład formatowania przecinka dziesiętnego bez wykładnika za pomocą %f czasownik.

var wynik = fmt. Sprintf("To jest przykład formatowania zmiennoprzecinkowego %f", 432.9503)
fmt. Drukujln (wynik)

Zawsze możesz użyć czasowników ogólnych, jeśli nie masz pewności co do typu.

Formatowanie ciągów i bajtów

Łańcuchy i fragmenty typów bajtów są w Go dość podobne. Są to flagi służące do formatowania ciągów i bajtów.

Czasownik Funkcjonalność
%s niezinterpretowane bajty ciągu lub wycinka
%q ciąg w podwójnym cudzysłowie, który bezpiecznie uciekł za pomocą składni Go
%x podstawa 16, małe litery, dwa znaki na bajt
%X podstawa 16, wielkie litery, dwa znaki na bajt

Oto przykład formatowania ciągu za pomocą %s czasownik.

var wynik = "przykład"
var wynik = fmt. Sprintf("To jest strunowy przykład formatowania %s", wynik)
fmt. Drukujln (wynik)

Pakiet fmt jest niezbędny do programowania w Pythonie

The fmt pakiet zawiera większość funkcji potrzebnych do formatowania ciągów. Go zapewnia również smyczki pakiet do manipulacji ciągami i a dziennik pakiet, który może formatować ciągi do logowania.

The fmt pakiet posiada funkcje, które implementują ja. Pisarz oraz ja. Czytelnik interfejsy. Przekonasz się, że jest przydatny w wielu przypadkach użycia, takich jak tworzenie aplikacji internetowych i aplikacji wiersza poleceń.