Que sont les assertions de type en langage Go ?
Le langage Go est un langage de programmation typé statiquement. L'assertion de type (Type Assertion) est l'un des moyens de déterminer le type de valeur spécifique stocké dans la variable d'interface du programme. Dans le langage Go, une variable d'interface peut stocker n'importe quel type de valeur, mais les informations de type stockées dans la variable d'interface sont limitées et tous les types d'opérations ne peuvent pas être effectués sur la variable d'interface. Par conséquent, dans les applications réelles, nous devons juger et convertir les types de valeurs spécifiques stockés dans les variables d’interface. C'est ce que font les assertions de type.
Les assertions de type dans le langage Go se présentent sous deux formes : les assertions de type valeur et les assertions de type pointeur. Les assertions de type valeur et les assertions de type pointeur ont des manières légèrement différentes de juger et de convertir les types de valeur des variables d'interface.
Assertion de type valeur :
Le format syntaxique de l'assertion de type valeur est le suivant :
x.(T)
Où, x est une variable de type interface et T représente un type spécifique. Cette assertion de type est vraie si x stocke une valeur de type T, et fausse sinon.
Le résultat de l'assertion de type a deux valeurs. La première valeur est la valeur après la conversion de x en type T. La deuxième valeur est une valeur booléenne indiquant si le résultat de cette assertion de type est vrai. L'implémentation spécifique du code est la suivante :
var x interface{} x = "hello" s, ok := x.(string) if ok { fmt.Printf("x 类型为 string,值为 %s。 ", s) } else { fmt.Printf("x 不是 string 类型。 ") }
Dans le code ci-dessus, une variable de type d'interface vide x est d'abord définie et une chaîne "hello" est affectée à la variable x. L'instruction d'assertion de type valeur x.(string) tente de convertir la variable x en un type chaîne, s représente la chaîne convertie et ok indique si l'assertion de type est réussie. Si ok est vrai, cela signifie que le type de valeur stocké dans x est un type de chaîne et nous pouvons afficher la chaîne convertie s. Si ok est faux, cela signifie que x n'est pas un type chaîne et les informations d'invite correspondantes peuvent être affichées.
Assertion de type pointeur :
Le format syntaxique de l'assertion de type pointeur est similaire à celui de l'assertion de type valeur, sauf que le pointeur doit être manipulé lors de l'assertion.
x.(*T)
Où, *T représente le type de pointeur de type T. Cette assertion de type est vraie si la valeur stockée dans x est du type pointeur T, et fausse sinon.
Semblables aux assertions de type valeur, les assertions de type pointeur ont également deux valeurs. La première valeur est la valeur après que x soit converti en pointeur de type T. La deuxième valeur est une valeur booléenne, indiquant si le résultat de cette assertion de type est vrai. . L'implémentation spécifique du code est la suivante :
type Foo struct { bar string } func main() { var i interface{} = &Foo{"hello"} f, ok := i.(*Foo) if ok { fmt.Printf("i 是指针类型,指向 Foo 类型的变量,f.bar 的值为 %s。 ", f.bar) } else { fmt.Printf("类型断言失败。 ") } }
Dans le code ci-dessus, une structure de type Foo est définie, une variable d'interface vide i est définie dans la fonction principale et un pointeur vers une structure de type Foo est attribué à la variable. je. L'assertion de type pointeur x.(*Foo) tente de convertir la variable x en un type de pointeur pointant vers une structure de type Foo, f représente le pointeur converti et ok représente si l'assertion de type est réussie. Si ok est vrai, cela signifie que le type valeur stocké dans x est un type pointeur pointant vers une structure de type Foo, et nous pouvons afficher la valeur du champ dans la structure pointée par le pointeur. Si ok est faux, cela signifie que x n'est pas un type de pointeur pointant vers une structure de type Foo et que les informations d'invite correspondantes peuvent être affichées.
Résumé :
L'assertion de type est un moyen couramment utilisé pour faire fonctionner les variables d'interface dans le langage Go. L'assertion de type peut déterminer le type stocké dans la variable d'interface, puis y effectuer les opérations correspondantes. Il existe deux formes d'assertions de type dans le langage Go, les assertions de type valeur et les assertions de type pointeur. Lorsque vous utilisez des assertions de type, vous devez faire attention à la gestion des erreurs pour éviter les erreurs d'exécution.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

La différence entre l'impression de chaîne dans le langage go: la différence dans l'effet de l'utilisation de fonctions println et string () est en Go ...

Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Lorsque vous utilisez Goland pour le développement du langage GO, de nombreux développeurs rencontreront des balises de structure personnalisées ...

Le problème de l'utilisation de Redessstream pour implémenter les files d'attente de messages dans le langage GO consiste à utiliser le langage GO et redis ...

Quelles bibliothèques de GO sont développées par de grandes entreprises ou des projets open source bien connus? Lors de la programmation en Go, les développeurs rencontrent souvent des besoins communs, ...

Deux façons de définir les structures dans le langage GO: la différence entre les mots clés VAR et le type. Lorsque vous définissez des structures, GO Language voit souvent deux façons d'écrire différentes: d'abord ...

GO POINTER SYNTAXE ET ATTENDRE DES PROBLÈMES DANS LA BIBLIOTHÈQUE VIPER Lors de la programmation en langage Go, il est crucial de comprendre la syntaxe et l'utilisation des pointeurs, en particulier dans ...
