Maison > Article > développement back-end > Pourquoi ne pouvez-vous pas obtenir l'adresse d'une valeur stockée dans une interface Go ?
Adressage des valeurs à l'intérieur des interfaces
Afin de comprendre pourquoi il n'est pas possible de prendre l'adresse d'une valeur stockée dans une interface, il est crucial pour approfondir la nature d'une variable d'interface. Essentiellement, une valeur d'interface se compose de deux composants :
Deux aspects clés à noter :
Considérez l'extrait de code suivant :
<code class="go">var v interface{} v = int(42) p := GetPointerToInterfaceValue(&v) // a pointer to an integer holding 42 v = &SomeStruct{...}</code>
Dans ce scénario, le stockage contenant auparavant l’entier est réutilisé pour stocker un pointeur. En conséquence, le déréférencement de *p donne désormais la représentation numérique du pointeur.
Pour éviter de compromettre le système de types, Go restreint intentionnellement ce type de récupération de pointeur (en dehors de l'utilisation dangereuse des packages).
Solutions alternatives
Si votre besoin est d'accéder aux pointeurs de structures stockées dans une liste, envisagez ces alternatives :
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!