Perustason Tyyppimuunnos
Tyyppimuunnos tarkoittaa tietojen muuntamista yhdestä tietotyypistä toiseen. On kuitenkin tärkeää huomata, että tietojen muuntaminen kaikista tietotyypeistä toiseen ei ole aina mahdollista. Esimerkiksi voimme muuntaa float-tyypin arvon int-tyypiksi ja päinvastoin. Sen sijaan string-tyypin muuntaminen int-tyypiksi ei ole järkevää eikä siten mahdollista.
Tyyppimuunnoksia on kahta tyyppiä. Yksi niistä on implisiittinen tyyppimuunnos. Implisiittinen tyyppimuunnos tapahtuu, kun Go muuntaa automaattisesti yhden tyypin toiseksi, kun se on turvallista ja yksiselitteistä. Esimerkiksi kun annamme kokonaislukuarvon liukulukumuuttujaan, se käsitellään automaattisesti liukulukuna, koska muunnoksessa ei voi kadota tietoa (10 on sama kuin 10.0):
index.go
1var myFloat float32 = 10 // A valid statement
Toinen tyyppimuunnoksen muoto on eksplisiittinen tyyppimuunnos, jossa ohjelmoija muuntaa tietoja tai lausekkeita tietoisesti tyypistä toiseen. Eksplisiittisen tyyppimuunnoksen syntaksi on desiredType(expression), esimerkiksi:
index.go
12345678package main import "fmt" func main() { var number1 float32 = 7.9 var number2 int = int(number1) fmt.Println(number2) // Outputs 7 }
Yllä olevassa ohjelmassa muunnetaan float32-arvo int-tyyppiseksi eksplisiittisellä tyyppimuunnoksella. Tämän seurauksena alkuperäisen luvun desimaaliosa jätetään pois, ja vain kokonaisarvo 7 tallennetaan muuttujaan number2. On tärkeää huomata, että tässä tapauksessa osa tiedoista menetetään, erityisesti luvun desimaaliosa (0.9). Teimme kuitenkin tämän valinnan tietoisesti.
Samoin voimme muuntaa rune-tyyppisen arvon string-tyyppiseksi. Runet-luvussa tarkastelimme ohjelmaa, joka tulosti Runen arvon, joka oli numero. Voimme kuitenkin näyttää Runen merkkivastineen muuntamalla sen merkkijonoksi:
index.go
123456789package main import "fmt" func main() { var char rune = 'a' fmt.Println(char) // Outputs 97 fmt.Println(string(char)) // Outputs 'a' }
Kuitenkaan emme voi muuntaa string-tyyppiä rune-tyyppiin:
index.go
12var myString string = "A string value" fmt.Println(rune(myString)) // Error: cannot convert myString (variable of type string) to type rune
On tärkeää huomata, että emme voi myöskään muuntaa yksittäistä merkkiä sisältävää merkkijonoa rune-tyyppiseksi:
index.go
1234567package main import "fmt" func main() { var text string = "a"; fmt.Printf(rune(text)) // Error here }
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 1.96
Perustason Tyyppimuunnos
Pyyhkäise näyttääksesi valikon
Tyyppimuunnos tarkoittaa tietojen muuntamista yhdestä tietotyypistä toiseen. On kuitenkin tärkeää huomata, että tietojen muuntaminen kaikista tietotyypeistä toiseen ei ole aina mahdollista. Esimerkiksi voimme muuntaa float-tyypin arvon int-tyypiksi ja päinvastoin. Sen sijaan string-tyypin muuntaminen int-tyypiksi ei ole järkevää eikä siten mahdollista.
Tyyppimuunnoksia on kahta tyyppiä. Yksi niistä on implisiittinen tyyppimuunnos. Implisiittinen tyyppimuunnos tapahtuu, kun Go muuntaa automaattisesti yhden tyypin toiseksi, kun se on turvallista ja yksiselitteistä. Esimerkiksi kun annamme kokonaislukuarvon liukulukumuuttujaan, se käsitellään automaattisesti liukulukuna, koska muunnoksessa ei voi kadota tietoa (10 on sama kuin 10.0):
index.go
1var myFloat float32 = 10 // A valid statement
Toinen tyyppimuunnoksen muoto on eksplisiittinen tyyppimuunnos, jossa ohjelmoija muuntaa tietoja tai lausekkeita tietoisesti tyypistä toiseen. Eksplisiittisen tyyppimuunnoksen syntaksi on desiredType(expression), esimerkiksi:
index.go
12345678package main import "fmt" func main() { var number1 float32 = 7.9 var number2 int = int(number1) fmt.Println(number2) // Outputs 7 }
Yllä olevassa ohjelmassa muunnetaan float32-arvo int-tyyppiseksi eksplisiittisellä tyyppimuunnoksella. Tämän seurauksena alkuperäisen luvun desimaaliosa jätetään pois, ja vain kokonaisarvo 7 tallennetaan muuttujaan number2. On tärkeää huomata, että tässä tapauksessa osa tiedoista menetetään, erityisesti luvun desimaaliosa (0.9). Teimme kuitenkin tämän valinnan tietoisesti.
Samoin voimme muuntaa rune-tyyppisen arvon string-tyyppiseksi. Runet-luvussa tarkastelimme ohjelmaa, joka tulosti Runen arvon, joka oli numero. Voimme kuitenkin näyttää Runen merkkivastineen muuntamalla sen merkkijonoksi:
index.go
123456789package main import "fmt" func main() { var char rune = 'a' fmt.Println(char) // Outputs 97 fmt.Println(string(char)) // Outputs 'a' }
Kuitenkaan emme voi muuntaa string-tyyppiä rune-tyyppiin:
index.go
12var myString string = "A string value" fmt.Println(rune(myString)) // Error: cannot convert myString (variable of type string) to type rune
On tärkeää huomata, että emme voi myöskään muuntaa yksittäistä merkkiä sisältävää merkkijonoa rune-tyyppiseksi:
index.go
1234567package main import "fmt" func main() { var text string = "a"; fmt.Printf(rune(text)) // Error here }
Kiitos palautteestasi!