Při psaní kódu Go zjistíte, že formátování řetězců je v mnoha situacích velmi užitečné. Možná analyzujete vstupy nebo vytváříte složitější výstup než jednoduché zřetězení. Možná pracujete s jinými typy než s prostými řetězci.

Formátování řetězců v Go využívá známý proces a syntaxi funkce printf, kterou také používají jazyky od Javy po Haskell.

Go poskytuje různé metody pro formátování řetězců v fmt balík. Pro formátování řetězce můžete použít funkce a slovesa v závislosti na operaci nebo vstupech, které chcete formátovat.

Formátování řetězce v Go

Funkce v balíčku fmt jsou podobné jako u protějšků, např funkce printf v bash nebo C. Go odvozuje svá formátovací slovesa z C.

Používáš slovesa formátování řetězců jako zástupné symboly pro hodnoty proměnných v obsahujícím řetězci. Tento formátovací řetězec pak můžete předat funkci jako Printf, spolu s hodnotami odpovídajícími těmto zástupným symbolům.

Nemůžete použít slovesa formátování řetězce s Tisk a Println metody. Můžete je použít s metodami jako Printf a Sprintf.

instagram viewer
fmt. Println("Toto je test %v", 90)
fmt. Printf("Toto je test %v", 90)

The %proti verb vypíše libovolnou hodnotu ve výchozím formátu. The Println metoda nerozpozná slovesa a vypíše jakékoli argumenty, které obdrží. The Printf a Sprintf obě funkce formátují první argument řetězce, který jim předáte.

Funkce formátování řetězců v balíčku fmt

Formátování řetězců v programovací jazyk Go vyžaduje, abyste použili funkci formátování řetězce a sloveso. Funkce vrátí naformátovaný řetězec a slovesa jsou zástupnými symboly pro vstupy do řetězce.

The Printf metoda formátuje vstup podle specifikátoru formátu a vrací počet zapsaných bajtů nebo chyb.

fmt. Printf("Toto je test %v", 90)

Obvykle se při používání nemusíte obávat chyb Printf metoda.

The Sprintf metoda formátuje podle zadaného formátu a vrátí výsledek jako řetězec.

var výsledek = fmt. Sprintf("Toto je test %v", 90)

The Fprintf metoda naformátuje řetězec a zapíše jej do zapisovače (metody, které implementují io. Spisovatel rozhraní)

// zápis dat na standardní výstup
výsledek, err = fmt. Fprintf (autor, "Toto je test %v", 90)

The Fscanf metoda skenuje ze čtečky a formátuje podle zadaného formátu.

var vzít tětiva

// čtení dat z daného řetězce
readString := řetězce. NewReader("Toto je test")

čti, chyba := fmt. Fscanf (čtečka, "%v", &take)

V tomto případě je Fscanf dekóduje řetězec ze čtečky do vzít proměnná a číst proměnná obsahuje výsledek formátu.

Slovesa pro formátování řetězců

Go poskytuje mnoho formátovacích sloves, která můžete použít spolu s funkcemi formátování řetězců.

Existují obecná slovesa pro formátování řetězců, jako je %proti sloveso v příkladech funkcí formátování řetězce. K formátování libovolného datového typu můžete použít obecná slovesa pro formátování řetězce.

Můžete použít %#proti sloveso pro výstup libovolné hodnoty, the %+v pro struktury, %T sloveso pro typ libovolné hodnoty a %% sloveso pro žádné hodnoty.

typ žádný strukturovat { 
název tětiva
stáří int
isLoggedIn bool
}

var instance = any {
jméno: "John Doe",
stáří: 34,
isLoggedIn: skutečný,
}

var výsledek = fmt. Sprintf("Toto je a strukturovat příklad formátování %+v", instance)
fmt. Println (výsledek)

The výsledek proměnná obsahuje formátovaný řetězec konkretizované struktury. Pokud si to vytisknete, mělo by to vypadat nějak takto:

Toto je příklad formátování struktury {jméno: John Doe věk: 34 isLoggedIn:skutečný}

Existují slovesa pro formátování konkrétních nativních datových typů Go, včetně kanálů a ukazatelů.

Sloveso Funkčnost
%t booleovské hodnoty.
%d int, int8 atd.
%d, %#x, pokud je vytištěno pomocí %#v uint, uint8 atd.
%G float32, complex64 atd.
%s tětiva.
%p chan.
%P ukazatel.

Budete chtít zajistit, abyste se nedělali chyby se slovesy, protože jsou rozlišována velká a malá písmena, jako např. chan a ukazatel slovesa.

Formátování celých čísel a plovoucích bodů

Existují slovesa formátování řetězců pro formátování celých čísel různé základny. K formátování celých čísel můžete použít kterékoli z těchto sloves

Sloveso Funkčnost
%b základ 2
%C znak reprezentovaný odpovídajícím bodem v kódu Unicode.
%d základ 10.
základ 8.
základ 8 s předponou 0o.
%q znakový literál v jednoduchých uvozovkách bezpečně zakódovaný pomocí syntaxe Go.
%X základ 16, s malými písmeny pro a-f.
%X základ 16, s velkými písmeny pro A-F.
%U Formát Unicode: U+1234; stejné jako "U+%04X".

Například můžete formátovat celé číslo pomocí %d sloveso:

var výsledek = fmt. Sprintf("Toto je příklad formátování celého čísla %d", 90)
fmt. Println (výsledek)

Toto jsou slovesa pro formátování čísel s plovoucí desetinnou čárkou.

Sloveso Funkčnost
%b bezdesetinný vědecký zápis s mocninou dvou, na způsob strconv. FormatFloat s formátem 'b', např. -123456p-78
%E vědecký zápis, např. -1,234456e+78
%E desetinná čárka, ale žádný exponent, např. 123,456
%F desetinná čárka, ale žádný exponent, např. 123,456
%F synonymum pro %f.
%G %e pro velké exponenty, %f jinak. Přesnost níže.
%G %E pro velké exponenty, %F jinak
%X hexadecimální zápis (s desetinnou mocninou dvou exponentů), např. -0x1,23abcp+20.
%X velký hexadecimální zápis, např. -0X1,23ABCP+20.

Zde je příklad formátování desetinné čárky bez exponentu s %F sloveso.

var výsledek = fmt. Sprintf("Toto je příklad formátování s plovoucí desetinnou čárkou %f", 432.9503)
fmt. Println (výsledek)

Vždy můžete použít obecná slovesa, pokud si nejste jisti typem.

Formátování řetězců a bajtů

Řetězce a typy bajtů jsou v Go velmi podobné. Toto jsou příznaky pro formátování řetězců a bajtů.

Sloveso Funkčnost
%s neinterpretované bajty řetězce nebo řezu
%q řetězec s dvojitými uvozovkami bezpečně uniklý syntaxí Go
%X základ 16, malá písmena, dva znaky na bajt
%X základ 16, velká písmena, dva znaky na bajt

Zde je příklad formátování řetězce pomocí %s sloveso.

var skóre = "příklad"
var výsledek = fmt. Sprintf("Toto je a tětiva příklad formátování %s", skóre)
fmt. Println (výsledek)

Balíček fmt je nezbytný pro programování v Pythonu

The fmt balíček obsahuje většinu funkcí, které budete potřebovat pro formátování řetězců. Go také poskytuje a struny balíček pro manipulaci se strunou a log balíček, který umí formátovat řetězce pro protokolování.

The fmt balíček má funkce, které implementují io. Spisovatel a io. Čtenář rozhraní. Zjistíte, že je to užitečné pro mnoho případů použití, jako je vytváření webových aplikací a aplikací příkazového řádku.