Maison > développement back-end > Golang > le corps du texte

Comment obtenir un descripteur de type dans Go sans instance ?

Patricia Arquette
Libérer: 2024-10-30 20:11:03
original
144 Les gens l'ont consulté

How to Get a Type Descriptor in Go Without an Instance?

TypeOf sans instance

Lorsque vous travaillez avec Go, il est utile d'obtenir la représentation d'un type sans instance existante. Ceci peut être réalisé en utilisant des techniques de réflexion.

Utiliser TypeOf avec un Nil typé

Le point crucial consiste à commencer par un pointeur vers le type souhaité et à le convertir en zéro. Cela crée une valeur nulle typée, nous permettant d'accéder au type de base à l'aide de la méthode Elem().

<code class="go">t := reflect.TypeOf((*int)(nil)).Elem()
fmt.Println(t) // Output: int</code>
Copier après la connexion

Exemple d'utilisation

Pour illustrer, considérons ce qui suit ParamReader struct :

<code class="go">type ParamReader struct {
    // The request from which to extract parameters
    context *http.Request
}

func (p *ParamReader) Require(s string, t reflect.Type) {
    // Validation logic omitted for brevity
}</code>
Copier après la connexion

Dans la méthode Require(), nous pouvons utiliser reflect.TypeOf() avec des pointeurs nuls tapés pour vérifier les types de paramètres :

<code class="go">if( t == reflect.TypeOf((*uint64)(nil)) {
    // Validation logic for uint64
}</code>
Copier après la connexion

Alternative avec Type personnalisé

Au lieu de transmettre des types bruts, il est pratique d'utiliser un type personnalisé qui encapsule des types spécifiques. Ceci peut être réalisé avec une structure simple de type énumération :

<code class="go">type TypeDesc int

const (
    TypeInt TypeDesc = iota
    TypeHttpRequest
    TypeOsFile
    TypeInt64
)</code>
Copier après la connexion

Utilisation de constantes

Pour plus d'efficacité, il est recommandé d'utiliser des constantes prédéfinies plutôt que de créer des types de manière dynamique.

<code class="go">const (
    TypeInt int = iota
    TypeHttpRequest
    TypeOsFile
    TypeInt64
)</code>
Copier après la connexion

Conclusion

En tirant parti des techniques de réflexion et de l'utilisation stratégique de valeurs nulles typées, il est possible d'obtenir des descripteurs de type sans instance. Cela ouvre diverses possibilités de vérification et de validation du type d'exécution, comme démontré dans l'exemple ParamReader.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!