Maison > développement back-end > Golang > Comment l'assertion de type de Go `.(data_type)` extrait-elle des types spécifiques des valeurs d'interface ?

Comment l'assertion de type de Go `.(data_type)` extrait-elle des types spécifiques des valeurs d'interface ?

Susan Sarandon
Libérer: 2024-12-24 01:36:10
original
705 Les gens l'ont consulté

How Does Go's Type Assertion `.(data_type)` Extract Specific Types from Interface Values?

Assertion de type dans Go : démystifier la méthode .(data_type)**

In Go, .(data_type ), connue sous le nom d'assertion de type, permet la récupération d'un type spécifique à partir d'une valeur d'interface. Comme indiqué dans "Effective Go", cela implique "d'en extraire une valeur du type explicite spécifié."

Dans le code fourni, Reflect.TypeOf(b) renvoie "interface{}" car b est attribué la valeur d'interface "idiot" de type chaîne. Cependant, reflect.TypeOf(b.(string)) renvoie "string" puisque l'assertion de type indique explicitement que b contient une valeur de chaîne.

Les assertions de type sont utilisées au moment de l'exécution pour extraire un type spécifique d'une interface. Elles diffèrent de la conversion de type en ce sens qu'elles ne créent pas une nouvelle copie de la valeur mais accèdent plutôt au type de la valeur sous-jacente.

Dans le cas de b.(string), l'assertion renvoie une valeur de chaîne. Cela permet des opérations spécifiques aux chaînes, telles que le découpage ou la vérification de leur longueur. De plus, vous pouvez tester le succès de l'assertion de type en attribuant une valeur booléenne non typée :

s, ok := b.(string) // s is of type string
if !ok {
    // b did not contain a value of type string!
}
Copier après la connexion

Pour clarifier davantage, les assertions de type ne « disent pas à Go que b est une chaîne ». Au lieu de cela, ils tentent d'extraire une valeur de chaîne de b au moment de l'exécution, ce qui provoque une panique si b contient un type différent (à moins que la valeur booléenne facultative ne soit affectée). La valeur résultante de l'assertion aura le type de données spécifié, donnant accès à ses opérations et propriétés spécifiques.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal