Maison  >  Article  >  développement back-end  >  Comment obtenir des informations de type en langage Go

Comment obtenir des informations de type en langage Go

青灯夜游
青灯夜游original
2023-02-22 19:14:134641parcourir

Dans le langage go, vous pouvez obtenir des informations de type par réflexion ; il vous suffit d'appeler la fonction TypeOf() du package Reflect. Méthode : 1. Utilisez la fonction "reflect.TypeOf()" pour obtenir l'objet type de la variable spécifiée ; 2. Utilisez Name() et Kind() pour obtenir les informations de type de l'objet type. La syntaxe est "type objet". .Name()" et "type objet .Kind()".

Comment obtenir des informations de type en langage Go

L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.

Dans le langage go, les informations de type peuvent être obtenues par réflexion.

En langage Go, en appelant la fonction reflet.TypeOf, nous pouvons créer une valeur reflet.Type à partir d'une valeur de n'importe quel type non-interface. La valeur Reflect.Type représente le type de cette valeur non-interface. Grâce à cette valeur, nous pouvons obtenir de nombreuses informations sur ce type non-interface. Bien sûr, nous pouvons également transmettre une valeur d'interface à un appel de fonction réflexion.TypeOf, mais cet appel renverra une valeur réflexion.Type qui représente le type dynamique de la valeur d'interface.

En fait, le type du seul paramètre de la fonction réflexion.TypeOf est interface{}, et la fonction réflexion.TypeOf renverra toujours une valeur réflexion.Type qui représente le type dynamique de cette valeur de paramètre d'interface unique.

Alors, comment obtenir une valeur Reflect.Type qui représente un certain type d'interface ? Nous devons atteindre cet objectif par des moyens indirects qui seront présentés ci-dessous.

Type Reflect.Type est un type d'interface qui spécifie plusieurs méthodes. Grâce à ces méthodes, nous pouvons observer diverses informations de type Go représentées par une valeur Reflect.Type. Certaines de ces méthodes s’appliquent à tous les types de types, tandis que d’autres ne s’appliquent qu’à un ou quelques types. L’appel d’une méthode avec une valeur de propriétaire réflexion.Type inappropriée provoquera une panique au moment de l’exécution.

Utilisez la fonction Reflect.TypeOf() pour obtenir un objet de type (reflect.Type) de n'importe quelle valeur. Le programme peut accéder aux informations de type de n'importe quelle valeur via l'objet de type. Comprenons le processus d'obtention d'objets de type à travers des exemples :

package main
import (
    "fmt"
    "reflect"
)
func main() {
    var a int
    typeOfA := reflect.TypeOf(a)
    fmt.Println(typeOfA.Name(), typeOfA.Kind())
}

La sortie du code est la suivante :

Comment obtenir des informations de type en langage Go

La description du code est la suivante :

  • La ligne 10 définit une variable de type int.

  • À la ligne 12, l'objet type typeOfA de la variable a est obtenu via réfléchissant.TypeOf(), et le type est réflexion.Type().

  • À la ligne 14, grâce à la fonction membre de l'objet de type typeOfA, vous pouvez obtenir le nom de type de la variable typeOfA int et le type (Kind) de int.

Développez vos connaissances : type et type de réflexion

Lorsque vous utilisez la réflexion, vous devez d'abord comprendre la différence entre le type et le type. En programmation, le type le plus couramment utilisé est le type, mais en réflexion, lorsqu'il faut distinguer une grande variété de types, le type (Kind) est utilisé. Par exemple, lorsque vous devez juger uniformément les pointeurs dans les types, il est plus pratique d'utiliser des informations kind (Kind).

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