Obtention de l'adresse des littéraux de chaîne dans Go : compréhension des restrictions et des solutions
Dans Go, les littéraux de chaîne sont des valeurs immuables stockées dans la table de chaînes de le programme. Tenter de récupérer l'adresse d'une chaîne littérale, comme le montre la fonction test1() dans le code fourni, entraîne une erreur de compilation. En effet, prendre l'adresse d'un littéral pose une ambiguïté inhérente.
Le compilateur de Go est confronté à un dilemme lorsqu'il traite des littéraux : doit-il renvoyer l'adresse du littéral lui-même, permettant des modifications potentiellement dangereuses, ou allouer une copie du littéral et renvoyer l'adresse au nouvel objet ? Cette ambiguïté est résolue par la spécification du langage, qui interdit explicitement de prendre l'adresse des littéraux.
Solutions alternatives
Pour contourner cette limitation, envisagez d'utiliser une variable pour contenir valeurs de chaîne, comme indiqué dans la fonction test2(). Dans ce cas, l'opérateur d'adresse peut être appliqué à la variable sans aucun problème. Cependant, si la chaîne est définie comme une constante, cette approche ne fonctionnera pas.
Une autre option consiste à utiliser des littéraux composites, qui sont des exceptions légales à la règle générale de ne pas aborder les littéraux. Les littéraux composites sont des objets temporaires créés à la volée, vous permettant d'obtenir l'adresse de leur contenu, comme le démontre l'exemple de spécification fourni.
Clé à retenir
En prenant l'adresse des littéraux de chaîne n'est pas possible en raison d'une sémantique ambiguë, l'utilisation de variables ou de littéraux composites offre des alternatives viables pour obtenir des adresses de valeurs de chaîne dans Go.
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!