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ármazik.
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.
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("Ez egy teszt %v", 90)
fmt. Printf("Ez egy teszt %v", 90)
Az %v 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("Ez egy teszt %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 eredmény = fmt. Sprintf("Ez egy teszt %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)
// adatok írása a szabványos kimenetre
eredmény, err = fmt. Fprintf (író: "Ez egy teszt %v", 90)
Az Fscanf metódus beolvas egy olvasóból, és a megadott formátumnak megfelelően formázza.
var vesz húr
// adatok olvasása a megadott karakterláncból
readString := karakterláncok. NewReader("Ez egy teszt")
olvas, err := fmt. Fscanf (olvasó, "%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 %v 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 %#v 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.
típus Bármi struct {
név húr
kor int
isBejelentkezett bool
}var példány = any {
név: "John Doe",
kor: 34,
isLoggedIn: igaz,
}
var eredmény = fmt. Sprintf("Ez egy struct formázási példa %+v", példány)
fmt. Println (eredmény)
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:
Ez egy struktúra formázási példa {name: John Doe kor: 34 isLoggedIn:igaz}
Léteznek az igék a Go natív adattípusok formázására, beleértve a csatornákat és a mutatókat.
Ige | Funkcionalitás |
---|---|
%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
Ige | Funkcionalitás |
---|---|
%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. |
%U | Unicode formátum: U+1234; ugyanaz, mint az "U+%04X". |
Például formázhat egy egész számot a %d ige:
var eredmény = fmt. Sprintf("Ez egy egész szám formázási példa %d", 90)
fmt. Println (eredmény)
Ezek a lebegőpontos számok formázására szolgáló igék.
Ige | Funkcionalitás |
---|---|
%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 |
%e | tudományos jelölés, pl. -1,234456e+78 |
%E | 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 eredmény = fmt. Sprintf("Ez egy lebegőpontos formázási példa %f", 432.9503)
fmt. Println (eredmény)
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.
Ige | Funkcionalitás |
---|---|
%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 pontszám = "példa"
var eredmény = fmt. Sprintf("Ez egy húr formázási példa %s", pontszám)
fmt. Println (eredmény)
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.