Maison > développement back-end > Golang > Comment puis-je déterminer le type sous-jacent de « l'interface{} » de Go ?

Comment puis-je déterminer le type sous-jacent de « l'interface{} » de Go ?

Mary-Kate Olsen
Libérer: 2024-12-04 10:39:11
original
1314 Les gens l'ont consulté

How Can I Determine the Underlying Type of Go's `interface{}`?

Dévoilement de la vraie nature de l'interface{} : guide complet pour la détermination du type

Lorsque vous travaillez avec le type d'interface polyvalente{} de Go, il est essentiel de naviguer dans sa flexibilité inhérente. Pour utiliser efficacement l'interface{}, nous approfondissons vos questions intrigantes :

1. Dévoilement du « vrai » type de w :

Type Switch to the Rescue :

switch v := w.(type) {
  case int:
    fmt.Println("Type: integer")
  case string:
    fmt.Println("Type: string")
}
Copier après la connexion

2. Extraire la représentation sous forme de chaîne d'un type :

Utilisation de TypeName :

fmt.Println(reflect.TypeOf(w).Name())
Copier après la connexion

3. Conversion d'une valeur à l'aide de la représentation sous forme de chaîne d'un type :

Assertion de type avec TypeName :

typeName := reflect.TypeOf(w).Name()
if typeName == "int" {
  value := w.(int)
} else if typeName == "string" {
  value := w.(string)
}
Copier après la connexion

Dans votre exemple spécifique, vous pouvez obtenir le "vrai" type de w à l'aide d'un commutateur de type :

switch w := weirdFunc(5).(type) {
  case int:
    fmt.Println("w is an integer")
  case string:
    fmt.Println("w is a string")
}
Copier après la connexion

Vous pouvez également exploiter le package Reflect pour récupérer le nom du type lui-même :

typeName := reflect.TypeOf(w).Name()
fmt.Println("w's type name:", typeName)
Copier après la connexion

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