Dévoilement de la méthode d'assertion de type : .(data_type)
Dans le monde de Go, l'énigmatique méthode .(data_type) en a déconcerté beaucoup , ce qui soulève la question : à quoi sert-il et quelle est sa signification ? Embarquons dans un voyage pour le démystifier.
Comme le montre l'extrait de code que vous avez fourni :
b := "silly" reflect.TypeOf(b.(string)) // string reflect.TypeOf(b) // string
La méthode .(data_type), dans ce cas b.(string), permet vous devez convertir une valeur d'interface{} (b) en un type de données spécifique, dans cet exemple une chaîne. Il fournit l'assurance au compilateur que la valeur est bien du type spécifié, comme string dans ce cas.
Cependant, il est impératif de se rappeler que b.(string) ne modifie pas la valeur sous-jacente de b. . Au lieu de cela, il extrait une nouvelle valeur du type spécifié. Pour vérifier le succès de l'assertion de type, vous pouvez inclure une variable booléenne supplémentaire :
s, ok := b.(string) // s is of type string if !ok { // b did not contain a value of type string! }
Cette approche vous fournit non seulement la ou les valeurs converties, mais également un résultat booléen (ok) indiquant si la conversion a réussi ou non.
Pour clarifier davantage, une assertion de type n'indique pas explicitement au compilateur que b est une chaîne. Au lieu de cela, il extrait dynamiquement une valeur de chaîne de b, générant une erreur si b contient un type différent. La valeur extraite peut ensuite être traitée sous forme de chaîne, vous permettant d'effectuer des opérations telles que le découpage, qui ne peuvent pas être effectuées directement sur les valeurs de l'interface.
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!