Ako formátovať reťazce v Go

Ako formátovať reťazce v Go

Pri písaní kódu Go zistíte, že formátovanie reťazcov 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ť.





ako horúce je príliš horúce CPU

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á od 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 Printf , spolu 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("This is a test %v", 90) 
fmt.Printf("This is a 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.





  výsledok formátovania celých čísel

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("This is a test %v", 90) 

Zvyčajne sa pri používaní nebudete musieť 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 result = fmt.Sprintf("This is a 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)

// write data to standard output 
result, err = fmt.Fprintf(writer, "This is a test %v", 90)

The Fscanf metóda skenuje z čítačky a formátuje podľa 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 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á na formátovanie reťazcov.

ako byť neviditeľný v programe Facebook Messenger

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.

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ýsledok premenná obsahuje formátovaný reťazec inštanciovanej štruktúry. Ak si to vytlačíte, malo by to vyzerať asi takto:

This is a struct formatting example {name:John Doe age:34 isLoggedIn:true}

Existujú slovesá na formátovanie špecifických natívnych dátových typov Go vrátane kanálov a ukazovateľov.

ikona napájania systému Windows 10 sa nezobrazuje
%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

%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.
%IN Formát Unicode: U+1234; rovnaké ako 'U+%04X'.

Napríklad môžete formátovať celé číslo pomocou %d sloveso:

var result = fmt.Sprintf("This is an integer formatting example %d", 90) 
fmt.Println(result)

Toto sú slovesá na formátovanie čísel s pohyblivou rádovou čiarkou.

%b bezdesiatkový vedecký zápis s mocninou dvojky, na spôsob strconv. FormatFloat s formátom 'b', napr. -123456p-78
% a vedecký zápis, napr. -1,234456e+78
%A 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 result = fmt.Sprintf("This is a floating point formatting example %f", 432.9503) 
fmt.Println(result)

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.

%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 score = "example" 
var result = fmt.Sprintf("This is a string formatting example %s", score)
fmt.Println(result)

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.Reader 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.