Golang est un langage de programmation typé statiquement et la conversion de type joue un rôle important dans la programmation quotidienne. Dans Golang, la conversion de type peut convertir une valeur d'un type en un autre type. Cet article présentera en détail la conversion de type dans Golang.
Dans Golang, la conversion de type automatique et la conversion de type forcée peuvent être effectuées. La conversion de type automatique signifie que le compilateur convertit automatiquement un type en un autre type lorsque cela est nécessaire. Par exemple, lors de l'attribution d'une valeur de type entier à une variable de type virgule flottante, la conversion de type est effectuée automatiquement. Un transtypage se produit lorsque le programmeur convertit explicitement une valeur d'un type à un autre. Dans Golang, la conversion de type forcée s'écrit comme suit : type cible (valeur convertie).
Voici quelques exemples de conversions de type de base :
var i int = 10 var f float64 = float64(i) // int to float64 var u uint = uint(f) // float64 to uint var s string = string(i) // int to string var b []byte = []byte(s) // string to []byte var r rune = rune(i) // int to rune, represents a Unicode code point
Dans Golang, l'assertion de type d'interface fait référence à la conversion de la valeur d'un type d'interface en la valeur d'un autre type d'interface. Cependant, s'il n'est pas sûr de convertir l'un des types d'interface en un autre, le compilateur ne parviendra pas à compiler. Par conséquent, lors de la conversion du type d'interface, le type initial peut être un sur-ensemble du type cible, mais il faut s'assurer que le type cible converti doit être un sous-ensemble du type d'origine.
Ce qui suit est un exemple de conversion de type d'interface :
package main import "fmt" type Animal interface { Speak() string } type Cat struct{} func (c Cat) Speak() string { return "cat" } type Dog struct{} func (d Dog) Speak() string { return "dog" } func main() { animals := []Animal{Cat{}, Dog{}, Cat{}, Dog{}} for _, animal := range animals { fmt.Println(animal.Speak()) if v, ok := animal.(Dog); ok { fmt.Println(v, ok) } } }
Dans Golang, en plus de la conversion de type de base et de type d'interface, une conversion de type personnalisée peut également être effectuée. Une conversion qui définit un nouveau type est très utile car elle convertit le nouveau type en ancien type et vice versa. Si nous ne le définissions pas comme type en utilisant NewType, nous ne pourrions pas utiliser la fonction de conversion.
Ce qui suit est un exemple de conversion de type personnalisé :
type Celsius float64 type Fahrenheit float64 const ( AbsoluteZeroC Celsius = -273.15 FreezingC Celsius = 0 BoilingC Celsius = 100 ) func CToF(c Celsius) Fahrenheit { return Fahrenheit(c*9/5 + 32) } func FToC(f Fahrenheit) Celsius { return Celsius((f - 32) * 5 / 9) } func main() { fmt.Printf("%g\n", BoilingC-FreezingC) // "100" °C boilingF := CToF(BoilingC) fmt.Printf("%g\n", boilingF-CToF(FreezingC)) // "180" °F }
Résumé
Cet article présente la conversion de type dans Golang, y compris la conversion des types de base, des types d'interface et des types personnalisés. Lors de la conversion de type, nous devons nous conformer aux spécifications de sécurité de la conversion de type pour garantir que notre programme est correct. La conversion de type est nécessaire dans de nombreux scénarios. Une bonne conception de conversion de type peut améliorer les performances du programme et est particulièrement importante dans la programmation réelle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!