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