Pri písaní kódu Go zistíte, že formátovanie reťazca je v mnohých situáciách veľmi užitočné. Možno analyzujete vstupy alebo vytvárate zložitejší výstup ako jednoduché zreťazenie. Možno pracujete s inými typmi ako s obyčajnými reťazcami.
Formátovanie reťazcov v Go využíva známy proces a syntax funkcie printf, ktorú používajú aj jazyky od Javy po Haskell.
Go poskytuje rôzne metódy formátovania reťazcov v fmt balík. Na formátovanie reťazca môžete použiť funkcie a slovesá v závislosti od operácie alebo vstupov, ktoré chcete formátovať.
Formátovanie reťazca v programe Go
Funkcie v balíku fmt sú podobné ako u náprotivkov, napr funkcia printf v bash alebo C. Go odvodzuje svoje formátovacie slovesá z C.
Používaš slovesá na formátovanie reťazcov ako zástupné symboly pre hodnoty premenných v reťazci, ktorý obsahuje. Tento formátovací reťazec potom môžete odovzdať funkcii ako Printfspolu s hodnotami zodpovedajúcimi týmto zástupným symbolom.
Nemôžete použiť slovesá na formátovanie reťazca s príponou Tlačiť a Println metódy. Môžete ich použiť s metódami ako Printf a Sprintf.
fmt. Println("Toto je test %v", 90)
fmt. Printf("Toto je test %v", 90)
The %v sloveso vypíše akúkoľvek hodnotu vo svojom predvolenom formáte. The Println metóda nerozpoznáva slovesá a vypíše akékoľvek argumenty, ktoré dostane. The Printf a Sprintf Obidve funkcie formátujú prvý reťazcový argument, ktorý im odovzdáte.
Funkcie formátovania reťazcov v balíku fmt
Formátovanie reťazcov v programovací jazyk Go vyžaduje, aby ste použili funkciu formátovania reťazca a sloveso. Funkcia vráti naformátovaný reťazec a slovesá sú zástupnými symbolmi pre vstupy do reťazca.
The Printf metóda formátuje vstup podľa špecifikátora formátu a vracia počet zapísaných bajtov alebo chýb.
fmt. Printf("Toto je test %v", 90)
Zvyčajne sa pri používaní nemusíte obávať chýb Printf metóda.
The Sprintf metóda formátuje podľa zadaného formátu a vráti výsledok ako reťazec.
var výsledok = fmt. Sprintf("Toto je test %v", 90)
The Fprintf metóda naformátuje reťazec a zapíše ho do zapisovača (metódy, ktoré implementujú io. Spisovateľ rozhranie)
// zápis údajov na štandardný výstup
výsledok, err = fmt. Fprintf (autor, "Toto je test %v", 90)
The Fscanf metóda skenuje z čítačky a formátuje podľa zadaného formátu.
var vziať reťazec
// načítanie údajov z daného reťazca
readString := reťazce. NewReader("Toto je test")
čítaj, chyba := fmt. Fscanf (čítačka, "%v", &take)
V tomto prípade, Fscanf dekóduje reťazec z čítačky do vziať premenná a čítať premenná obsahuje výsledok formátu.
Slovesá na formátovanie reťazcov
Go poskytuje mnoho formátovacích slovies, ktoré môžete použiť spolu s funkciami formátovania reťazcov.
Existujú všeobecné slovesá na formátovanie reťazcov ako napr %v sloveso v príkladoch funkcií formátovania reťazca. Na formátovanie akéhokoľvek typu údajov môžete použiť všeobecné slovesá formátovania reťazcov.
Môžete použiť %#v sloveso na výstup ľubovoľnej hodnoty, the %+v pre štruktúry, %T sloveso pre typ ľubovoľnej hodnoty a %% sloveso pre žiadne hodnoty.
typu akýkoľvek štrukturovať {
názov reťazec
Vek int
isLoggedIn bool
}var instance = any {
meno: "John Doe",
Vek: 34,
isLoggedIn: pravda,
}
var výsledok = fmt. Sprintf("Toto je a štrukturovať príklad formátovania %+v", inštancia)
fmt. Println (výsledok)
The výsledok premenná obsahuje formátovaný reťazec inštanciovanej štruktúry. Ak si to vytlačíte, malo by to vyzerať asi takto:
Toto je príklad formátovania štruktúry {meno: John Doe vek: 34 isLoggedIn:pravda}
Existujú slovesá na formátovanie špecifických natívnych dátových typov Go vrátane kanálov a ukazovateľov.
Sloveso | Funkčnosť |
---|---|
%t | boolovské hodnoty. |
%d | int, int8 atď. |
%d, %#x, ak je vytlačené pomocou %#v | uint, uint8 atď. |
%g | float32, complex64 atď. |
%s | reťazec. |
%p | chan. |
%P | ukazovateľ. |
Mali by ste sa uistiť, že nerobíte chyby so slovesami, pretože rozlišujú veľké a malé písmená, ako napr. chan a ukazovateľ slovesá.
Formátovanie celých čísel a pohyblivých hodnôt
Existujú slovesá na formátovanie reťazcov na formátovanie celých čísel rôzne základy. Na formátovanie celých čísel môžete použiť ktorékoľvek z týchto slovies
Sloveso | Funkčnosť |
---|---|
%b | základ 2 |
%c | znak reprezentovaný zodpovedajúcim bodom kódu Unicode. |
%d | základ 10. |
%o | základ 8. |
%O | základ 8 s predponou 0o. |
%q | znakový literál v jednoduchých úvodzovkách bezpečne unikol syntaxou Go. |
%X | základ 16, s malými písmenami pre a-f. |
%X | základ 16, s veľkými písmenami pre A-F. |
%U | Formát Unicode: U+1234; rovnaké ako "U+%04X". |
Napríklad môžete formátovať celé číslo pomocou %d sloveso:
var výsledok = fmt. Sprintf("Toto je príklad formátovania celého čísla %d", 90)
fmt. Println (výsledok)
Toto sú slovesá na formátovanie čísel s pohyblivou rádovou čiarkou.
Sloveso | Funkčnosť |
---|---|
%b | bezdesiatkový vedecký zápis s mocninou dvojky, na spôsob strconv. FormatFloat s formátom 'b', napr. -123456p-78 |
%e | vedecký zápis, napr. -1,234456e+78 |
%E | desatinná čiarka, ale žiadny exponent, napr. 123,456 |
%f | desatinná čiarka, ale žiadny exponent, napr. 123,456 |
%F | synonymum pre %f. |
%g | %e pre veľké exponenty, %f inak. Presnosť nižšie. |
%G | %E pre veľké exponenty, %F inak |
%X | hexadecimálny zápis (s desatinnou mocninou dvoch exponentov), napr. -0x1,23abcp+20. |
%X | veľký hexadecimálny zápis, napr. -0X1,23ABCP+20. |
Tu je príklad formátovania desatinnej čiarky bez exponentu s %f sloveso.
var výsledok = fmt. Sprintf("Toto je príklad formátovania s pohyblivou rádovou čiarkou %f", 432.9503)
fmt. Println (výsledok)
Vždy môžete použiť všeobecné slovesá, ak si nie ste istí typom.
Formátovanie reťazcov a bajtov
Typy reťazcov a segmentov bajtov sú v Go veľmi podobné. Toto sú príznaky pre formátovanie reťazcov a bajtov.
Sloveso | Funkčnosť |
---|---|
%s | neinterpretované bajty reťazca alebo rezu |
%q | reťazec v dvojitých úvodzovkách bezpečne uniknutý syntaxou Go |
%X | základ 16, malé písmená, dva znaky na bajt |
%X | základ 16, veľké písmená, dva znaky na bajt |
Tu je príklad formátovania reťazca pomocou %s sloveso.
var skóre = "príklad"
var výsledok = fmt. Sprintf("Toto je a reťazec príklad formátovania %s", skóre)
fmt. Println (výsledok)
Balík fmt je nevyhnutný pre programovanie v Pythone
The fmt balík obsahuje väčšinu funkcií, ktoré budete potrebovať na formátovanie reťazca. Go tiež poskytuje a struny obal na manipuláciu so strunou a a log balík, ktorý dokáže formátovať reťazce na protokolovanie.
The fmt balík má funkcie, ktoré implementujú io. Spisovateľ a io. Čitateľ rozhrania. Zistíte, že je to užitočné v mnohých prípadoch použitia, ako je vytváranie webových aplikácií a aplikácií príkazového riadka.