Maison > Article > développement back-end > Pourquoi ai-je besoin d'un récepteur de pointeur pour supprimer un élément d'une tranche dans une structure ?
Supprimer un élément d'une tranche dans une structure
Pour supprimer un élément d'une tranche dans une structure, vous devez utiliser un récepteur de pointeur , plutôt qu'un récepteur de valeur. Un récepteur de valeur modifie une copie de la structure d'origine, tandis qu'un récepteur de pointeur modifie la structure d'origine elle-même.
Exemple de code
Considérez ce code pour supprimer un ami d'un Structure invité :
type Guest struct { id int name string surname string friends []int } func (self Guest) removeFriend(id int) { for i, other := range self.friends { if other == id { self.friends = append(self.friends[:i], self.friends[i+1:]...) break } } }
Ce code ne fonctionnera pas car il utilise un récepteur de valeur, (self Guest). Pour modifier la structure d'origine, vous devez utiliser un récepteur de pointeur, (self Invité)*.
Code correct
func (self *Guest) removeFriend(id int) { for i, other := range self.friends { if other == id { self.friends = append(self.friends[:i], self.friends[i+1:]...) break } } }
Maintenant, appeler guest1.removeFriend(3) supprimera l'ami avec l'ID 3 de la structure guest1.
Remarque :
Notez également que l'utilisation de noms de destinataires tels que ( self) et (this) ne sont pas idiomatiques en Go. Utilisez plutôt le nom de la structure, tel que (invité).
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!