Maison > développement back-end > Golang > Comment la réflexion peut-elle aider à identifier les types sous-jacents dans les interfaces Go ?

Comment la réflexion peut-elle aider à identifier les types sous-jacents dans les interfaces Go ?

Linda Hamilton
Libérer: 2024-12-30 15:48:10
original
509 Les gens l'ont consulté

How Can Reflection Help Identify Underlying Types in Go Interfaces?

Utilisation de Reflection pour la vérification de type dans Go

Lorsque vous traitez des interfaces dans Go, il est parfois nécessaire d'identifier le type spécifique sous-jacent à la valeur de l'interface . Par exemple, vous souhaiterez peut-être faire la différence entre une structure avec une valeur de chaîne et d'autres types.

Reflect.TypeOf renvoie un Type, qui est un descripteur pour un type donné. Cependant, réaffirmer le type en un type peut être difficile.

Identification de la valeur du type d'interface

L'extrait de code fourni identifie une structure avec une valeur de chaîne à l'aide de l'instruction switch dans la fonction IdentifierItemType. Il s'agit d'une approche simple pour les scénarios simples dans lesquels l'interface est explicitement convertie en type cible. Cependant, lors de l'utilisation de la réflexion, le Type renvoyé par Reflect.TypeOf ne peut pas être directement affirmé à un type.

Approche alternative

Au lieu d'essayer d'obtenir une assertion de type avec Type directement, il existe d'autres moyens de gérer cette situation efficacement :

  1. Type Switch : Si vous avez besoin pour fonctionner en fonction du type d'interface externe, l'utilisation d'un commutateur de type est une option appropriée. Par exemple :
switch x.(type) {
case int:
  dosomething()
}
Copier après la connexion
  1. Réflexion sur les types de champs : Si vous devez analyser les types des attributs contenus dans une interface, vous pouvez utiliser la réflexion :
s := reflect.ValueOf(x)
for i := 0; i < s.NumFields(); i++ {
  switch s.Field(i).Interface().(type) {
    case int:
      dosomething()
  }
}
Copier après la connexion

Cette approche vous permet de parcourir chaque champ de l'interface et d'examiner le type sous-jacent de chaque individu. valeur.

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