Merkkijonon Muotoilu
Pyyhkäise näyttääksesi valikon
Nyt kun olemme oppineet kaikki perusdatatyypit, voimme tutustua merkkijonojen muotoiluun. Ohjelmoinnissa merkkijonojen muotoilu tarkoittaa muuttujien arvojen sisällyttämistä merkkijonoihin.
Huomio
import-lauseella tuodaan paketteja Go-sovellukseen. Paketti on joukko toisiinsa liittyviä Go-lähdetiedostoja, jotka yhdessä tarjoavat tietyn joukon toiminnallisuuksia tai palveluita.fmt-paketti tarjoaa funktioita, joiden avulla voidaan muotoilla merkkijonoja.
Yksi fmt-paketin funktioista, jota olemme käyttäneet, on Println. Println-funktio näyttää tulosteen aina uudelle riville. On kuitenkin olemassa myös Print-funktio, joka näyttää tulosteen siirtymättä uudelle riville:
index.go
12345678package main import "fmt" func main() { fmt.Print("1") fmt.Print(" 2") fmt.Print(" 3") }
Yleisesti ottaen näitä funktioita voidaan käyttää sijoittamaan muuttujien arvoja merkkijonodataan seuraavalla tavalla:
index.go
123456789package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Println("There are", n, "cats,", in, "of them are inside the house while", out, "are outside.") }
Tämä menetelmä ei kuitenkaan ole kovin tehokas, koska merkkijono täytyy jakaa useisiin osiin muuttujien lisäämiseksi oikeisiin kohtiin, mikä voi muuttua hankalaksi monimutkaisemmissa tapauksissa. Printf-funktio ratkaisee tämän ongelman ja yksinkertaistaa muotoillun tulosteen näyttämistä.
Printf-funktio ottaa ensimmäisenä argumenttinaan muotoilumerkkijonon, jota seuraavat arvot (tai muuttujat), jotka sijoitetaan muotoilumerkkijonoon. Muotoilumerkkijono sisältää paikkamerkkejä (muotoilumäärittimiä), jotka määrittävät halutun tulosteen muodon.
Seuraava on esimerkki:
index.go
12345678910package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Printf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) }
Kuten esimerkki osoittaa, muotoilumääritteet ovat symboleja, jotka toimivat tiettyjen tietotyyppien paikkamerkkeinä merkkijonossa. Jokaiselle tietotyypille on oma muotoilumäärite. Alla olevassa taulukossa on lueteltu perusmuotoilumääritteet:
| Muotoilumerkki | Tietotyyppi |
|---|---|
%d | Integer |
%s | String |
%f | Float |
%t | Boolean |
%c | Character (or Rune) |
Muuttujat korvaavat vastaavat paikkamerkit muotoilumerkkijonossa. Yllä olevan esimerkin tulosteessa ensimmäinen %d korvataan muuttujan n arvolla. Samoin toinen korvataan vastaavalla muuttujalla, joka on in, ja viimeinen %d korvataan muuttujan out arvolla.
Voimme myös muotoilla merkkijonon ja tallentaa sen merkkijonomuuttujaan käyttämällä Sprintf-funktiota, joka muotoilee merkkijonon ja palauttaa tuloksena saadun merkkijonon tallennettavaksi tai käytettäväksi muualla sen sijaan, että se näytettäisiin heti näytöllä:
index.go
123456789101112package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in var text string = fmt.Sprintf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) fmt.Println("Text:", text) }
Tässä on monimutkaisempi esimerkki, joka yhdistää useita aiemmin käsiteltyjä käsitteitä yhteen ohjelmaan. Se on hyödyllinen harjoitus, jonka avulla voit tarkastella seuraavaa ohjelmaa ja sen tulostetta parantaaksesi koodinlukutaitojasi:
index.go
12345678910package main import "fmt" func main() { var numA float32 = 17.7 var numB int = 10 var str string = fmt.Sprintf("It is %t that 'a' is bigger than 'b'.", numA > float32(numB)) fmt.Printf("The numbers 'a' and 'b' are %f and %d. %s", numA, numB, str) }
Joissakin tapauksissa kääntäjä suorittaa automaattisen tyyppimuunnoksen sovittaakseen arvot muotoilumäärittäjiin, kuten seuraavassa esimerkissä osoitetaan:
index.go
1234567package main import "fmt" func main() { var char rune = 'A' fmt.Printf("The Unicode decimal value of %c is %d", char, char) }
Merkki 'char' tulostetaan sekä merkkinä että numeerisena arvona. Joissakin tapauksissa kääntäjä voi kuitenkin tuottaa virheen. Esimerkiksi seuraava koodi johtaa virheelliseen tulosteeseen, koska 'float'-tyyppiä ei voi muuntaa automaattisesti 'int'-tyyppiin:
index.go
12var value float32 = 5.7 fmt.Printf("%d", value)
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme