Merkkijonon Muotoilu
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
Can you explain more about how to use different format specifiers?
What happens if I use the wrong format specifier for a variable?
Can you show more examples of string formatting in Go?
Awesome!
Completion rate improved to 1.96
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!