Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Merkkijonon Muotoilu | Tietotyypit
Practice
Projects
Quizzes & Challenges
Visat
Challenges
/
Johdatus Golangiin

bookMerkkijonon 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

index.go

copy
12345678
package 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

index.go

copy
123456789
package 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

index.go

copy
12345678910
package 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:

MuotoilumerkkiTietotyyppi
%dInteger
%sString
%fFloat
%tBoolean
%cCharacter (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

index.go

copy
123456789101112
package 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

index.go

copy
12345678910
package 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

index.go

copy
1234567
package 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

index.go

copy
12
var value float32 = 5.7 fmt.Printf("%d", value)
question mark

Mikä on alla olevan ohjelman tuloste?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 7

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 2. Luku 7
some-alt