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

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

Linda Hamilton
Libérer: 2024-12-02 22:07:15
original
684 Les gens l'ont consulté

How Can I Determine the Underlying Type and Perform Type Conversions with Go's `interface{}`?

Explorer les mystères de l'interface{} : démasquer le type et la conversion

Dans le domaine de la programmation Go, l'interface{} règne comme un type de données polyvalent mais énigmatique. Pour naviguer dans ses subtilités, il est important d'approfondir ses capacités et de trouver des réponses aux énigmes courantes.

Dévoilement du "vrai" type d'interface{}

Pour déterminer le vraie nature d'une valeur d'interface{}, vous pouvez utiliser des assertions de type :

w := weirdFunc(5)
if tmp, ok := w.(int); ok {
    fmt.Println("w is of type int")
}
Copier après la connexion

Cette instruction conditionnelle vérifie si la la valeur w peut être transtypée en un entier. Si la conversion réussit, cela signifie que w contient effectivement une valeur entière sous-jacente.

Obtention d'une représentation sous forme de chaîne de type

Go fournit un mécanisme élégant pour récupérer la chaîne représentation d'un type appelé Type.Name :

fmt.Printf("Type of w: %T", w)
Copier après la connexion

Dans cet exemple, la sortie serait "int", révélant la représentation sous forme de chaîne du type int cette valeur d'interface {} w encapsule actuellement.

Conversion à l'aide de la représentation sous forme de chaîne d'un type

Malheureusement, Go n'offre aucun moyen direct d'utiliser la représentation sous forme de chaîne d'un type pour la valeur conversion. Cependant, vous pouvez tirer parti de la réflexion pour obtenir cette fonctionnalité :

wt := reflect.TypeOf(w)
switch wt.Name() {
case "int":
    newValue := reflect.New(wt).Elem().Interface()
    _ = newValue.(int) // type assertion to use newValue
}
Copier après la connexion

Dans cet extrait, la réflexion est utilisée pour récupérer la définition du type et créer une nouvelle valeur de ce type. L'assertion de type est ensuite utilisée pour convertir la valeur de l'interface{} en son type sous-jacent.

En maîtrisant ces techniques, les développeurs peuvent exploiter efficacement la puissance de l'interface{} et libérer sa polyvalence dans un large éventail de programmation Go. scénarios.

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