Maison > développement back-end > Golang > Comment supprimer des éléments d'une tranche stockée dans une interface Go ?

Comment supprimer des éléments d'une tranche stockée dans une interface Go ?

Susan Sarandon
Libérer: 2024-11-16 07:49:03
original
647 Les gens l'ont consulté

How to Delete Elements from a Slice Stored Within a Go Interface?

Suppression d'un élément d'une tranche d'interfaces à assertion de type

Lors de la manipulation d'une valeur de tranche enveloppée dans une interface dans Go, suppression d'un élément directement à partir de la tranche n’est pas possible. Cette opération entraîne l'erreur « Impossible d'attribuer à la valeur » car l'assertion de type crée une copie de la valeur stockée dans l'interface.

L'attribution d'une valeur à une interface dont le type est affirmé ne modifie pas la valeur d'origine stockée dans le interface. Au lieu de cela, cela modifie uniquement la copie obtenue à partir de l’assertion de type. Pour contourner cette limitation, envisagez de stocker un pointeur de tranche dans l'interface (*[]interface{}).

Les types de pointeurs permettent de modifier la valeur pointée plutôt que le pointeur lui-même. Ceci est démontré ci-dessous :

s := []interface{}{0, "one", "two", 3, 4}

var value interface{} = &s

// Perform removal by accessing the pointed slice
sp := value.(*[]interface{})

i := 2
*sp = append((*sp)[:i], (*sp)[i+1:]...)

fmt.Println(value)
Copier après la connexion

Sortie :

&[0 one 3 4]
Copier après la connexion

En affirmant le type de l'interface sur un pointeur de tranche ([]interface{}) et en utilisant l'opérateur d'indirection (), on peut modifier directement la valeur de la tranche pointue.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal