Il est possible en Go d'obtenir un descripteur de type sans instance. En utilisant la fonction reflex.TypeOf(), vous pouvez accéder à la représentation Type d'un pointeur vers une valeur nulle.
<code class="go">t := reflect.TypeOf((*int)(nil)).Elem() fmt.Println(t) // Output: int t = reflect.TypeOf((*http.Request)(nil)).Elem() fmt.Println(t) // Output: http.Request t = reflect.TypeOf((*os.File)(nil)).Elem() fmt.Println(t) // Output: os.File</code>
Pour commodité, vous pouvez définir des constantes globales pour représenter différents types, éliminant ainsi le besoin de créer des variables de réflexion.Type :
<code class="go">type TypeDesc int const ( TypeInt TypeDesc = iota TypeHTTPRequest TypeOSFile )</code>
Vous pouvez ensuite utiliser ces constantes dans les instructions switch pour déterminer le type d'une valeur :
<code class="go">func printType(t TypeDesc) { switch t { case TypeInt: fmt.Println("Type: int") case TypeHTTPRequest: fmt.Println("Type: http.Request") case TypeOSFile: fmt.Println("Type: os.File") } }</code>
L'utilisation de constantes pour la représentation de type offre plusieurs avantages :
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!