Kaip formatuoti eilutes Go

Kaip formatuoti eilutes Go

Rašydami „Go“ kodą, daugelyje situacijų eilučių formatavimas bus labai naudingas. Galbūt analizuojate įvestis arba kuriate sudėtingesnę išvestį nei paprastas sujungimas. Galbūt dirbate su kitais tipais nei paprastos eilutės.





Eilučių formatavimas programoje „Go“ naudoja pažįstamą printf funkcijos procesą ir sintaksę, kurią taip pat naudoja kalbos nuo „Java“ iki „Haskell“.





Go siūlo įvairius būdus formatuoti eilutes fmt paketą. Galite naudoti funkcijas ir veiksmažodžius eilutės formatavimui, priklausomai nuo operacijos ar įvesties, kurią norite formatuoti.





Eilučių formatavimas programoje „Go“.

Fmt paketo funkcijos yra panašios į analogiškas funkcijas, pvz printf funkcija bash arba C. Go savo formatavimo veiksmažodžius kildina iš C.

Tu naudoji eilučių formatavimo veiksmažodžiai kaip kintamųjų reikšmių vietos žymekliai eilutėje, kurioje yra. Tada galite perduoti tą formatavimo eilutę tokiai funkcijai kaip Printf , kartu su reikšmėmis, atitinkančiomis tuos vietos rezervavimo ženklus.



Negalite naudoti eilučių formatavimo veiksmažodžių su Spausdinti ir Println metodus. Galite juos naudoti su tokiais metodais kaip Printf ir Sprintf .

fmt.Println("This is a test %v", 90) 
fmt.Printf("This is a test %v", 90)

The %in veiksmažodis spausdina bet kokią reikšmę numatytuoju formatu. The Println metodas neatpažįsta veiksmažodžių ir spausdina bet kokius argumentus, kuriuos gauna. The Printf ir Sprintf Abi funkcijos formatuoja pirmąjį joms perduodamos eilutės argumentą.





  sveikųjų skaičių formatavimo rezultatas

Eilučių formatavimo funkcijos fmt pakete

Formatuoti eilutes Go programavimo kalba reikia naudoti eilutės formatavimo funkciją ir veiksmažodį. Funkcija grąžina suformatuotą eilutę, o veiksmažodžiai yra eilutės įvesties rezervuotos vietos.

The Printf metodas suformatuoja įvestį pagal formato specifikaciją ir grąžina įrašytų baitų arba klaidų skaičių.





kompiuteris neatpažįsta mano telefono
fmt.Printf("This is a test %v", 90) 

Paprastai jums nereikės jaudintis dėl klaidų, kai naudojate Printf metodas.

The Sprintf metodas formatuoja pagal nurodytą formatą ir pateikia rezultatą kaip eilutę.

var result = fmt.Sprintf("This is a test %v", 90) 

The Fprintf metodas formatuoja eilutę ir įrašo ją į rašytoją (metodai, kurie įgyvendina io.Rašytojas sąsaja)

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

The Fscanf metodu nuskaito iš skaitytuvo ir formatuoja pagal nurodytą formatą.

var take string 

// read data from the given string
readString := strings.NewReader("This is a test")

read, err := fmt.Fscanf(reader, "%v", &take)

Šiuo atveju, Fscanf iššifruoja eilutę iš skaitytuvo į imti kintamasis ir skaityti kintamasis turi formato rezultatą.

Eilučių formatavimo veiksmažodžiai

„Go“ pateikia daugybę formatavimo veiksmažodžių, kuriuos galite naudoti kartu su eilutės formatavimo funkcijomis.

kurio numeris nemokamas su vardu

Yra bendrųjų eilučių formatavimo veiksmažodžių, tokių kaip %in veiksmažodis eilutės formatavimo funkcijų pavyzdžiuose. Norėdami formatuoti bet kokį duomenų tipą, galite naudoti bendruosius eilučių formatavimo veiksmažodžius.

Galite naudoti %#in veiksmažodis išvesti bet kokią reikšmę, the %+v konstrukcijoms, %T veiksmažodis bet kokios reikšmės tipui ir %% veiksmažodis be vertybių.

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 rezultatas kintamasis turi suformatuotą egzempliorių struktūros eilutę. Jei jį atsispausdinsite, jis turėtų atrodyti maždaug taip:

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

Yra veiksmažodžių, skirtų konkretiems Go vietinių duomenų tipams, įskaitant kanalus ir rodykles, formatuoti.

%t booleans.
%d int, int8 ir kt.
%d, %#x, jei atspausdinta naudojant %#v uint, uint8 ir kt.
%g float32, kompleksas64 ir kt.
%s styga.
%p chan.
%P rodyklė.

Norėsite užtikrinti, kad nepadarytumėte klaidų su veiksmažodžiais, nes juose skiriamos didžiosios ir mažosios raidės, pvz., chan ir rodyklė veiksmažodžiai.

Sveikųjų skaičių ir slankiųjų skaičių formatavimas

Yra eilučių formatavimo veiksmažodžiai, skirti formatuoti sveikuosius skaičius skirtingos bazės . Norėdami formatuoti sveikuosius skaičius, galite naudoti bet kurį iš šių veiksmažodžių

%b 2 bazė
%c simbolis, vaizduojamas atitinkamo Unikodo kodo taško.
%d 10 bazė.
%O 8 bazė.
%O 8 bazė su 0o priešdėliu.
%q vienos kabutės simbolio pažodinis pažodžiui saugiai pabėgo naudojant Go sintaksę.
%x 16 bazė su mažosiomis raidėmis a-f.
%X 16 bazė su didžiosiomis raidėmis A-F.
%IN Unikodo formatas: U+1234; tas pats kaip 'U+%04X'.

Pavyzdžiui, sveikąjį skaičių galite suformatuoti naudodami %d veiksmažodis:

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

Tai yra veiksmažodžiai, skirti slankiojo kablelio skaičiams formatuoti.

%b dešimtainis mokslinis žymėjimas su laipsniu du, strconv būdu. FormatFloat su „b“ formatu, pvz. -123456p-78
%ir mokslinis žymėjimas, pvz. -1,234456e+78
%IR kablelis, bet be laipsnio, pvz., 123,456
%f kablelis, bet be laipsnio, pvz., 123,456
%F %f sinonimas.
%g %e dideliems eksponentams, %f kitu atveju. Tikslumas žemiau.
%G %E dideliems eksponentams, %F kitu atveju
%x šešioliktainis žymėjimas (su dviejų rodiklių dešimtaine galia), pvz., -0x1.23abcp+20.
%X didžiųjų raidžių šešioliktainis žymėjimas, pvz. -0X1.23ABCP+20.

Štai pavyzdys, kaip formatuoti dešimtainį tašką be eksponento su %f veiksmažodis.

var result = fmt.Sprintf("This is a floating point formatting example %f", 432.9503) 
fmt.Println(result)

Visada galite naudoti bendruosius veiksmažodžius, jei nesate tikri dėl tipo.

kaip sudėti lenteles greta žodžio

Eilučių ir baitų formatavimas

„Go“ eilutės ir baitų tipų dalys yra gana panašios. Tai yra eilučių ir baitų formatavimo vėliavėlės.

%s neinterpretuoti eilutės arba skilties baitai
%q dviguba eilutė saugiai pašalinta naudojant Go sintaksę
%x 16 bazė, mažosios raidės, du simboliai viename baite
%X 16 bazė, didžiosios raidės, du simboliai viename baite

Štai pavyzdys, kaip suformatuoti eilutę su %s veiksmažodis.

var score = "example" 
var result = fmt.Sprintf("This is a string formatting example %s", score)
fmt.Println(result)

„Fmt“ paketas yra būtinas „Python“ programavimui

The fmt pakete yra dauguma funkcijų, kurių prireiks eilučių formatavimui. Go taip pat teikia a stygos paketas, skirtas manipuliuoti eilutėmis ir a žurnalas paketą, kuris gali formatuoti eilutes registravimui.

The fmt paketas turi funkcijų, kurios įgyvendina io.Rašytojas ir io.Skaitytojas sąsajos. Tai bus naudinga daugeliu atvejų, pavyzdžiui, kuriant žiniatinklio ir komandinės eilutės programas.