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
Mary-Kate Olsenoriginal
2024-12-07 03:53:08663parcourir

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)

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)

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
}

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!

Déclaration:
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