A Go kód írása közben számos helyzetben nagyon hasznosnak találja a karakterlánc formázást. Lehet, hogy a bemeneteket elemzi, vagy bonyolultabb kimenetet készít, mint az egyszerű összefűzés. Lehet, hogy a sima karakterláncoktól eltérő típusokkal dolgozik.
A Go karakterláncformázása a printf függvény ismert folyamatát és szintaxisát használja, amelyet a Java-tól a Haskell-ig szintén használnak.
A Go különféle módszereket kínál a karakterláncok formázására a fmt csomag. A karakterlánc formázásához függvényeket és igéket használhat a formázni kívánt művelettől vagy bemenetektől függően.
String formázás a Go-ban
Az fmt csomagban lévő funkciók hasonlóak a megfelelőihez, mint például a printf függvény a bashban vagy C. A Go a formázási igéket C-ből származtatja.
Használod karakterláncformázó igék a változó értékeinek helyőrzőjeként egy karakterláncban. Ezután átadhatja ezt a formázási karakterláncot egy függvénynek, mint például Printf , valamint az adott helyőrzőknek megfelelő értékekkel.
hogyan lehet eltávolítani a Windows 10 frissítést
Nem használhat karakterláncformázó igéket a Nyomtatás és Println mód. Használhatja őket olyan módszerekkel, mint pl Printf és Sprintf .
fmt.Println("This is a test %v", 90)
fmt.Printf("This is a test %v", 90)
Az %ban ben Az ige bármely értéket az alapértelmezett formátumában nyomtat. Az Println metódus nem ismeri fel az igéket, és kiírja a kapott argumentumokat. Az Printf és Sprintf függvények egyaránt formázzák a nekik átadott első karakterlánc-argumentumot.
Karakterlánc formázási függvények az fmt csomagban
Karakterláncok formázása a Go programozási nyelv karakterlánc formázási függvény és ige használatára van szükség. A függvény a formázott karakterláncot adja vissza, az igék pedig a karakterlánc bemeneteinek helyőrzői.
Az Printf metódus formázza a bemenetet a formátummeghatározó szerint, és visszaadja az írott bájtok vagy hibák számát.
fmt.Printf("This is a test %v", 90)
Hagyományosan nem kell aggódnia a hibák miatt, amikor használja a Printf módszer.
Az Sprintf metódus a megadott formátumnak megfelelően formázza, és az eredményt karakterláncként adja vissza.
var result = fmt.Sprintf("This is a test %v", 90)
Az Fprintf metódus formázza a karakterláncot, és kiírja egy íróba (olyan módszerek, amelyek megvalósítják a io.Író felület)
// write data to standard output
result, err = fmt.Fprintf(writer, "This is a test %v", 90)
Az Fscanf metódus beolvas egy olvasóból, és a megadott formátumnak megfelelően formázza.
var take string
// read data from the given string
readString := strings.NewReader("This is a test")
read, err := fmt.Fscanf(reader, "%v", &take)
Ebben az esetben a Fscanf dekódolja a karakterláncot az olvasóból a vesz változó, és a olvas változó tartalmazza a formátum eredményét.
A karakterláncformázó igék
A Go számos formázási igét kínál, amelyeket a karakterlánc formázási funkciókkal együtt használhat.
Vannak általános karakterlánc-formázó igék, mint például a %ban ben ige a karakterlánc formázási függvények példáiban. Bármilyen adattípus formázásához használhatja az általános karakterlánc-formázó igéket.
Használhatja a %#ban ben ige bármilyen értéket kiadni, a %+v struktúrák esetében a %T ige bármely érték típusához, és a %% ige érték nélkül.
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)
Az eredmény változó tartalmazza a példányosított struktúra formázott karakterláncát. Ha kinyomtatod, valahogy így kell kinéznie:
This is a struct formatting example {name:John Doe age:34 isLoggedIn:true}
Léteznek az igék a Go natív adattípusok formázására, beleértve a csatornákat és a mutatókat.
%t | logikai értékeket. |
%d | int, int8 stb. |
%d, %#x, ha a következővel van nyomtatva: %#v | uint, uint8 stb. |
%g | float32, complex64 stb. |
%s | húr. |
%p | chan. |
%P | mutató. |
Győződjön meg arról, hogy nem hibázik az igékkel, mivel ezek megkülönböztetik a kis- és nagybetűket, mint pl. chan és mutató igék.
Egész számok és lebegőpontok formázása
Vannak karakterláncformázó igék az egész számok formázásához különböző alapok . Ezen igék bármelyikét használhatja egész számok formázására
%b | alap 2 |
%c | a megfelelő Unicode kódpont által képviselt karakter. |
%d | alap 10. |
%O | alap 8. |
%O | 8. alap 0o előtaggal. |
%q | egy egy idézőjeles karakter szó szerint biztonságosan megszökött a Go szintaxissal. |
%x | alap 16, kisbetűkkel a-f-hez. |
%X | 16-os alap, nagybetűkkel az A-F-hez. |
%BAN BEN | Unicode formátum: U+1234; ugyanaz, mint az 'U+%04X'. |
Például formázhat egy egész számot a %d ige:
var result = fmt.Sprintf("This is an integer formatting example %d", 90)
fmt.Println(result)
Ezek a lebegőpontos számok formázására szolgáló igék.
%b | tizedes szám nélküli tudományos jelölés kettő hatványával, strconv módjára. FormatFloat 'b' formátummal, pl. -123456p-78 |
%és | tudományos jelölés, pl. -1,234456e+78 |
%ÉS | tizedesvessző, de kitevő nélkül, például 123,456 |
%f | tizedesvessző, de kitevő nélkül, például 123,456 |
%F | %f szinonimája. |
%g | %e nagy kitevők esetén, %f egyébként. Pontosság lent. |
%G | %E nagy kitevőknek, %F egyébként |
%x | hexadecimális jelölés (két kitevő decimális hatványával), pl. -0x1,23abcp+20. |
%X | nagybetűs hexadecimális jelölés, pl. -0X1.23ABCP+20. |
Íme egy példa kitevő nélküli tizedesvessző formázására a %f ige.
var result = fmt.Sprintf("This is a floating point formatting example %f", 432.9503)
fmt.Println(result)
Mindig használhatja az általános igéket, ha bizonytalan a típust illetően.
Karakterláncok és bájtok formázása
A karakterláncok és a bájttípusok szeletei meglehetősen hasonlóak a Go-ban. Ezek a karakterláncok és bájtok formázására szolgáló jelzők.
%s | a karakterlánc vagy szelet értelmezetlen bájtjai |
%q | egy dupla idézőjeles karakterlánc biztonságosan kikerült a Go szintaxissal |
%x | alap 16, kisbetűk, két karakter bájtonként |
%X | alap 16, nagybetűk, két karakter bájtonként |
Íme egy példa egy karakterlánc formázására a %s ige.
var score = "example"
var result = fmt.Sprintf("This is a string formatting example %s", score)
fmt.Println(result)
Az fmt csomag elengedhetetlen a Python programozáshoz
Az fmt csomag tartalmazza a karakterlánc formázásához szükséges funkciók nagy részét. Go is biztosít a húrok csomag a karakterlánc manipulációhoz és a log csomag, amely formázni tudja a naplózáshoz szükséges karakterláncokat.
Az fmt csomag olyan funkciókkal rendelkezik, amelyek megvalósítják a io.Író és io.Olvasó interfészek. Számos felhasználási esetben hasznosnak találja, például webes és parancssori alkalmazások készítéséhez.