Casting de type dynamique dans Go
Dans Go, attribuer la valeur d'une interface à une variable typée nécessite la connaissance du type de la variable. Cependant, que se passe-t-il si le type est inconnu au préalable ?
La méthode de conversion conventionnelle implique une conversion de type codée en dur, telle que :
var intAge = interfaceAge.(int)
Pour résoudre le scénario dans lequel le type est inconnu, certains développeurs peuvent proposer ce qui suit :
var x = getType() var someTypeAge = interfaceAge.(x)
Cependant, cela n'est pas réalisable dans Go. Le langage est typé statiquement, ce qui signifie que les types de variables sont déterminés au moment de la compilation.
Approche alternative : changement de type
Pour déterminer dynamiquement le type d'une interface{}, tapez la commutation peut être utilisée :
var t interface{} t = functionOfSomeType() switch t := t.(type) { default: fmt.Printf("unexpected type %T", t) // %T prints the type of t case bool: fmt.Printf("boolean %t\n", t) // t has type bool case int: fmt.Printf("integer %d\n", t) // t has type int case *bool: fmt.Printf("pointer to boolean %t\n", *t) // t has type *bool case *int: fmt.Printf("pointer to integer %d\n", *t) // t has type *int }
Cette approche permet l'identification dynamique du type d'une interface{} et des informations ultérieures spécifiques au type manipulation.
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!