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.
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.