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 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á slovesa pro formátování 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("This is a test %v", 90)
fmt.Printf("This is a test %v", 90)
The %v 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.
skvělé věci, které můžete dělat s flash diskem
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("This is a test %v", 90)
Obvykle se při používání nebudete muset obávat chyb Printf metoda.
The Sprintf metoda formátuje podle zadaného formátu a vrátí výsledek jako řetězec.
var result = fmt.Sprintf("This is a test %v", 90)
The Fprintf metoda naformátuje řetězec a zapíše jej do zapisovače (metody, které implementují io.Spisovatel rozhraní)
// write data to standard output
result, err = fmt.Fprintf(writer, "This is a test %v", 90)
The Fscanf metoda skenuje ze čtečky a formátuje podle zadaného formátu.
var take string
// read data from the given string
readString := strings.NewReader("This is a test")
read, err := fmt.Fscanf(reader, "%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 %v 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 %#v sloveso pro výstup libovolné hodnoty, the %+v pro struktury, %T sloveso pro typ libovolné hodnoty a %% sloveso pro žádné hodnoty.
type any struct {
name string
age int
isLoggedIn bool
}
var instance = any {
name: "John Doe",
age: 34,
isLoggedIn: true,
}
var result = fmt.Sprintf("This is a struct formatting example %+v", instance)
fmt.Println(result)
The výsledek proměnná obsahuje formátovaný řetězec konkretizované struktury. Pokud si to vytisknete, mělo by to vypadat nějak takto:
This is a struct formatting example {name:John Doe age:34 isLoggedIn:true}
Existují slovesa pro formátování konkrétních nativních datových typů Go, včetně kanálů a ukazatelů.
%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
%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. |
%V | Formát Unicode: U+1234; stejné jako 'U+%04X'. |
Například můžete formátovat celé číslo pomocí %d sloveso:
var result = fmt.Sprintf("This is an integer formatting example %d", 90)
fmt.Println(result)
Toto jsou slovesa pro formátování čísel s plovoucí desetinnou čárkou.
%b | bezdesetinný vědecký zápis s mocninou dvou, na způsob strconv. FormatFloat s formátem 'b', např. -123456p-78 |
%a | vědecký zápis, např. -1,234456e+78 |
%A | 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 result = fmt.Sprintf("This is a floating point formatting example %f", 432.9503)
fmt.Println(result)
Vždy můžete použít obecná slovesa, pokud si nejste jisti typem.
jak opravit ghost touch na iphone
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ů.
%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 score = "example"
var result = fmt.Sprintf("This is a string formatting example %s", score)
fmt.Println(result)
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.Reader 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.