Kun kirjoitat Go-koodia, merkkijonomuotoilu on erittäin hyödyllistä monissa tilanteissa. Saatat jäsentää syötteitä tai luoda monimutkaisempaa tulosta kuin yksinkertainen ketjutus. Saatat työskennellä muiden kuin tavallisten merkkijonojen kanssa.

Go: n merkkijonomuotoilu käyttää tuttua printf-funktion prosessia ja syntaksia, jota käyttävät myös kielet Javasta Haskelliin.

Go tarjoaa erilaisia ​​menetelmiä merkkijonojen muotoiluun fmt paketti. Voit käyttää funktioita ja verbejä merkkijonojen muotoiluun riippuen toiminnosta tai syötteistä, joita haluat muotoilla.

Merkkijonojen muotoilu Goissa

Fmt-paketin toiminnot ovat samanlaisia ​​kuin vastaavissa, kuten printf-funktio bashissa tai C. Go saa muotoiluverbinsä C: stä.

Sinä käytät merkkijonomuotoiluverbit muuttujien arvojen paikkamerkkinä sisältävässä merkkijonossa. Voit sitten välittää tämän muotoilumerkkijonon funktiolle, kuten Printf, sekä näitä paikkamerkkejä vastaavia arvoja.

Et voi käyttää merkkijonomuotoiluverbejä kanssa Tulosta ja Println menetelmiä. Voit käyttää niitä menetelmillä, kuten Printf ja Sprintf.

instagram viewer
fmt. Println("Tämä on testi %v", 90)
fmt. Printf("Tämä on testi %v", 90)

The %v verbi tulostaa minkä tahansa arvon oletusmuodossaan. The Println menetelmä ei tunnista verbejä ja tulostaa mitä tahansa argumentteja se vastaanottaa. The Printf ja Sprintf funktiot molemmat muotoilevat ensimmäisen niille välittämäsi merkkijonoargumentin.

Merkkijonomuotoilufunktiot fmt-paketissa

Muotoile merkkijonoja Go-ohjelmointikieli edellyttää merkkijonomuotoilufunktion ja verbin käyttöä. Funktio palauttaa muotoillun merkkijonon, ja verbit ovat merkkijonon syötteiden paikkamerkit.

The Printf menetelmä muotoilee syötteen muotomääritteen mukaan ja palauttaa kirjoitettujen tavujen tai virheiden määrän.

fmt. Printf("Tämä on testi %v", 90)

Perinteisesti sinun ei tarvitse huolehtia virheistä, kun käytät sitä Printf menetelmä.

The Sprintf menetelmä muotoilee määritetyn muodon mukaan ja palauttaa tuloksen merkkijonona.

var tulos = fmt. Sprintf("Tämä on testi %v", 90)

The Fprintf menetelmä muotoilee merkkijonon ja kirjoittaa sen kirjoittajalle (menetelmät, jotka toteuttavat io. Kirjailija käyttöliittymä)

// kirjoittaa tiedot vakiolähtöön
tulos, err = fmt. Fprintf (kirjoittaja, "Tämä on testi %v", 90)

The Fscanf menetelmä skannaa lukijasta ja muotoilee määritetyn muodon mukaan.

var ota merkkijono

// lukea dataa annetusta merkkijonosta
readString := merkkijonoja. NewReader("Tämä on testi")

lue, err := fmt. Fscanf (lukija, "%v", &take)

Tässä tapauksessa Fscanf purkaa merkkijonon lukijasta ota muuttuja ja lukea muuttuja sisältää muodon tuloksen.

Merkkijonomuotoiluverbit

Go tarjoaa monia muotoiluverbejä, joita voit käyttää merkkijonomuotoilutoimintojen kanssa.

On olemassa yleisiä merkkijonomuotoiluverbejä, kuten %v verbi merkkijonomuotoilutoimintojen esimerkeissä. Voit käyttää yleisiä merkkijonomuotoiluverbejä minkä tahansa tietotyypin muotoiluun.

Voit käyttää %#v verbi tuottamaan minkä tahansa arvon, the %+v rakenteille, %T verbi minkä tahansa arvon tyypille ja %% verbi ilman arvoja.

tyyppi minkä tahansa struct { 
nimi merkkijono
ikä int
onKirjautunut sisään bool
}

var esimerkki = mikä tahansa {
nimi: "John Doe",
ikä: 34,
onKirjautunut: totta,
}

var tulos = fmt. Sprintf("Tämä on a struct muotoiluesimerkki %+v", esiintymä)
fmt. Println (tulos)

The tulos muuttuja sisältää instantoidun rakenteen muotoillun merkkijonon. Jos tulostat sen, sen pitäisi näyttää tältä:

Tämä on esimerkki rakenteen muotoilusta {name: John Doe ikä: 34 isLoggedIn:totta}

Siellä on verbejä tiettyjen Go-natiivitietotyyppien muotoiluun, mukaan lukien kanavat ja osoittimet.

Verbi Toiminnallisuus
%t booleans.
%d int, int8 jne.
%d, %#x, jos painettu %#v uint, uint8 jne.
%g float32, kompleksi64 jne.
%s merkkijono.
%p chan.
%P osoitin.

Haluat varmistaa, että et tee virheitä verbien kanssa, koska ne ovat isot ja pienet kirjaimet erottelevat, kuten chan ja osoitin verbit.

Kokonaislukujen ja kelluvien muotojen muotoilu

On olemassa merkkijonomuotoiluverbejä kokonaislukujen muotoiluun erilaiset pohjat. Voit käyttää mitä tahansa näistä verbeistä kokonaislukujen muotoiluun

Verbi Toiminnallisuus
%b pohja 2
%c vastaavan Unicode-koodipisteen edustama merkki.
%d pohja 10.
%o pohja 8.
%O kanta 8 0o-etuliitteellä.
%q kertalainausmerkkiliteraali pääsi turvallisesti pois Go-syntaksilla.
%x pohja 16, pienillä kirjaimilla a-f.
%X pohja 16, isot kirjaimet A-F.
%U Unicode-muoto: U+1234; sama kuin "U+%04X".

Voit esimerkiksi muotoilla kokonaisluvun käyttämällä %d verbi:

var tulos = fmt. Sprintf("Tämä on kokonaislukumuotoiluesimerkki %d", 90)
fmt. Println (tulos)

Nämä ovat verbejä liukulukujen muotoiluun.

Verbi Toiminnallisuus
%b desimaaliton tieteellinen merkintä, jonka eksponentin potenssi on kaksi, strconv: n tapaan. FormatFloat 'b'-muodolla, esim. -123456p-78
%e tieteellinen merkintä, esim. -1,234456e+78
%E desimaalipilkku, mutta ei eksponenttia, esim. 123,456
%f desimaalipilkku, mutta ei eksponenttia, esim. 123,456
%F synonyymi sanalle %f.
%g %e suurille eksponenteille, %f muuten. Tarkkuus alla.
%G %E suurille eksponenteille, %F muuten
%x heksadesimaalimerkintä (kahden eksponentin desimaaliteholla), esim. -0x1.23abcp+20.
%X isoilla kirjaimilla heksadesimaalimerkintä, esim. -0X1.23ABCP+20.

Tässä on esimerkki desimaalipilkun muotoilusta ilman eksponenttia %f verbi.

var tulos = fmt. Sprintf("Tämä on liukulukumuotoiluesimerkki % f", 432.9503)
fmt. Println (tulos)

Voit aina käyttää yleisiä verbejä, jos olet epävarma tyypistä.

Merkkijonojen ja tavujen muotoilu

Merkkijonot ja tavutyyppien osat ovat melko samanlaisia ​​Gossa. Nämä ovat merkkijonojen ja tavujen muotoilun lippuja.

Verbi Toiminnallisuus
%s merkkijonon tai viipaleen tulkitsemattomat tavut
%q kaksoislainausmerkkijono poistui turvallisesti Go-syntaksilla
%x perus 16, pienet kirjaimet, kaksi merkkiä tavua kohden
%X kanta 16, isot kirjaimet, kaksi merkkiä tavua kohden

Tässä on esimerkki merkkijonon muotoilusta %s verbi.

var pisteet = "esimerkki"
var tulos = fmt. Sprintf("Tämä on a merkkijono muotoiluesimerkki %s", pisteet)
fmt. Println (tulos)

Fmt-paketti on välttämätön Python-ohjelmoinnissa

The fmt paketti sisältää suurimman osan toiminnoista, joita tarvitset merkkijonojen muotoiluun. Go tarjoaa myös a jouset paketti merkkijonojen käsittelyyn ja a Hirsi paketti, joka voi muotoilla merkkijonoja kirjaamista varten.

The fmt paketissa on toimintoja, jotka toteuttavat io. Kirjailija ja io. Lukija käyttöliittymät. Se on hyödyllinen moniin käyttötapauksiin, kuten verkko- ja komentorivisovellusten rakentamiseen.