Maison >développement back-end >Golang >Comment modifier une tranche dans une structure en Go ?
Comment supprimer un élément d'une tranche dans une structure
La suppression d'un élément d'une tranche dans une structure nécessite de prendre en compte plusieurs considérations clés.
Problème : la longueur de la tranche reste inchangée
Dans l'extrait de code fourni, la méthode removeFriend vise à supprimer un élément de la tranche amis. Cependant, le dernier élément de la tranche est dupliqué au lieu que la tranche devienne plus courte. Cela se produit parce que la méthode utilise un récepteur de valeur, modifiant une copie de la structure plutôt que la valeur d'origine.
Solution : utilisez un récepteur de pointeur
Pour garantir que les modifications effectués dans la méthode affectent la structure d'origine, un récepteur de pointeur doit être utilisé. Cela permet à la méthode de modifier l’instance de structure réelle. La syntaxe d'un récepteur de pointeur dans Go est func (receiver *struct_name).
Exemple :
type Guest struct { id int name string surname string friends []int } func (g *Guest) removeFriend(id int) { for i, other := range g.friends { if other == id { g.friends = append(g.friends[:i], g.friends[i+1:]...) break } } }
Explication :
En utilisant un récepteur pointeur (*Guest), la méthode RemoveFriend modifie désormais la tranche d'amis de la structure Guest d'origine.
Nom idiomatique du récepteur
C'est important à noter que les noms de récepteurs comme self et ceci ne sont pas couramment utilisés dans Go. Au lieu de cela, des noms plus spécifiques comme g ou guest sont préférés pour exprimer l'intention de la méthode.
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!