Casting de type dans Go : compréhension des assertions de type et de l'identité
Dans Go, l'incapacité d'effectuer un transtypage de type à partir d'un alias de type vers son Le type de fonction sous-jacent a intrigué de nombreux développeurs. Examinons les raisons de ce comportement.
Go propose deux mécanismes de manipulation de type : les assertions de type et les conversions de type. Les assertions de type, utilisées dans l'extrait fourni, garantissent que la valeur stockée dans un type d'interface est d'un type spécifique. Cependant, contrairement aux conversions de types, les assertions de type adhèrent strictement à l'identité de type. Cela signifie que le type dynamique de la valeur de l'interface doit être identique au type affirmé, sans place pour les relations de compatibilité ou d'héritage.
Dans le code fourni, l'alias de type quelque choseFuncy représente une fonction avec un paramètre int et un type de retour booléen. Lors de l'attribution de la fonction funcy à une variable d'interface, a réussit grâce à la capacité de Go à lier dynamiquement des fonctions, affirmer que a est de type quelque choseFuncy échoue en raison de l'exigence d'une identité de type exacte.
Pour résumer, dans Go, tapez les assertions donnent la priorité à la correspondance de type exacte plutôt qu'aux signatures de fonction ou aux relations de compatibilité. Par conséquent, la conversion en un alias de type qui représente une fonction nécessite une déclaration de type explicite pour garantir que le type dynamique de la valeur d'interface affirmée correspond à la définition de l'alias.
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!