Retour dans le changement de type : une explication détaillée
Le changement de type dans Go permet une gestion efficace des valeurs en fonction de leurs types concrets. Cependant, contrairement aux instructions switch-case standard, le repli est explicitement interdit dans le type switch. Ce choix de conception soulève des questions sur sa justification.
Comprendre les raisons
La spécification Go indique que le « fallthrough » n'est pas autorisé dans les commutateurs de type. Cette interdiction provient de plusieurs facteurs :
Un exemple de clarification
Pour illustrer le problème, considérez le code suivant :
switch i := x.(type) { case int: fmt.Printf("%T\n", i) // prints "int" case bool: fmt.Printf("%T\n", i) // prints "bool" fallthrough case string: fmt.Printf("%T\n", i) }
Si le remplacement était autorisé, il n'est pas clair quel type serait imprimé pour la casse de la chaîne. Il serait ambigu de savoir si je dois rester un booléen ou devenir une interface {} contenant à la fois un booléen et une chaîne.
Solutions alternatives
Bien que le repli ne soit pas autorisé dans tapez des commutateurs, il existe d'autres moyens d'obtenir un comportement similaire :
switch i := x.(type) { case bool, string: if b, ok := i.(bool); ok { // b is a bool } // i is an interface{} that contains either a bool or a string }
Cette approche permet une gestion plus spécifique de différents types sans introduire d'incompatibilités de types ni d'ambiguïté.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3