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.

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