Maison > développement back-end > Golang > Comment puis-je effectuer une conversion de type dynamique en Go avec des types inconnus ?

Comment puis-je effectuer une conversion de type dynamique en Go avec des types inconnus ?

Mary-Kate Olsen
Libérer: 2024-12-07 03:53:08
original
660 Les gens l'ont consulté

How Can I Perform Dynamic Type Casting in Go with Unknown Types?

Casting de type dynamique dans Go

Dans Go, attribuer la valeur d'une interface à une variable typée nécessite la connaissance du type de la variable. Cependant, que se passe-t-il si le type est inconnu au préalable ?

La méthode de conversion conventionnelle implique une conversion de type codée en dur, telle que :

var intAge = interfaceAge.(int)
Copier après la connexion

Pour résoudre le scénario dans lequel le type est inconnu, certains développeurs peuvent proposer ce qui suit :

var x = getType()
var someTypeAge = interfaceAge.(x)
Copier après la connexion

Cependant, cela n'est pas réalisable dans Go. Le langage est typé statiquement, ce qui signifie que les types de variables sont déterminés au moment de la compilation.

Approche alternative : changement de type

Pour déterminer dynamiquement le type d'une interface{}, tapez la commutation peut être utilisée :

var t interface{}
t = functionOfSomeType()
switch t := t.(type) {
default:
    fmt.Printf("unexpected type %T", t)       // %T prints the type of t
case bool:
    fmt.Printf("boolean %t\n", t)             // t has type bool
case int:
    fmt.Printf("integer %d\n", t)             // t has type int
case *bool:
    fmt.Printf("pointer to boolean %t\n", *t) // t has type *bool
case *int:
    fmt.Printf("pointer to integer %d\n", *t) // t has type *int
}
Copier après la connexion

Cette approche permet l'identification dynamique du type d'une interface{} et des informations ultérieures spécifiques au type manipulation.

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