Comprendre le type, la valeur et la réflexion dans Go
Dans Go, la réflexion fournit des mécanismes pour inspecter et manipuler le code au moment de l'exécution. Il propose deux types fondamentaux : Reflect.Type et Reflect.Value, chacun offrant des capacités différentes pour interagir avec les éléments du programme.
Considérez l'extrait de code suivant :
<code class="go">func show(i interface{}) { switch t := i.(type) { case *Person: t := reflect.TypeOf(i) // What does 't' contain? v := reflect.ValueOf(i) // What does 'v' contain? tag := t.Elem().Field(0).Tag name := v.Elem().Field(0).String() } }</code>
Différence entre Type et valeur dans Reflection
reflect.Type :
reflect.Value :
Exemple d'utilisation
Dans l'extrait de code fourni, l'instruction switch vérifie si i est une instance de "*Person". Si tel est le cas, Reflect.TypeOf(i) renvoie le type de la structure Person, permettant l'accès à ses balises de champ (par exemple, t.Elem().Field(0).Tag`).
Pendant ce temps, Reflect.ValueOf(i) renvoie un *reflect.Value pour l'instance Person. En appelant v.Elem().Field(0).String(), vous récupérez la représentation sous forme de chaîne de la valeur de son premier champ, quel que soit le type spécifique de l'instance.
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!