Comprendre les erreurs de changement de type
Dans Go, l'utilisation d'un commutateur de type sur une variable non-interface entraîne l'erreur "Impossible de taper le commutateur sur valeur non-interface." Pour résoudre ce problème, il est nécessaire de convertir la variable en un type d'interface approprié avant de tenter le changement de type.
Dans l'exemple donné, le code tente d'effectuer un changement de type sur la variable n, qui est une instance de la structure Number. Cependant, la structure Number n'implémente aucune interface, elle ne peut donc pas être utilisée directement dans un commutateur de type.
Résoudre l'erreur
Pour corriger l'erreur, vous devez convertissez d’abord n en type interface{}, qui représente une interface vide. Cela convertit n en une valeur pouvant contenir n’importe quel type. Ensuite, dans le commutateur de type, vous pouvez affirmer le type réel de la valeur sous-jacente à l'aide du mot-clé type.
Voici à quoi ressemblerait le code corrigé :
import ( "fmt" "strconv" ) type Stringer interface { String() string } type Number struct { v int } func (number *Number) String() string { return strconv.Itoa(number.v) } func main() { n := &Number{1} switch v := interface{}(n).(type) { case Stringer: fmt.Println("Stringer:", v) default: fmt.Println("Unknown") } }
Avec ce changement, le le code imprime avec succès "Stringer : 1".
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!