Go - ajouter à une tranche dans une structure
Dans Go, lorsque vous essayez d'ajouter à une tranche dans une structure, l'erreur la plus courante est ne pas parvenir à réattribuer le résultat à la tranche.
Considérez ce qui suit exemple :
type MyBoxItem struct { Name string } type MyBox struct { Items []MyBoxItem } func (box *MyBox) AddItem(item MyBoxItem) []MyBoxItem { box.Items = append(box.Items, item) return box.Items }
La fonction AddItem prend un MyBoxItem et l'ajoute à la tranche Items de la structure MyBox. Il renvoie la tranche mise à jour.
Maintenant, la fonction principale :
item1 := MyBoxItem{Name: "Test Item 1"} item2 := MyBoxItem{Name: "Test Item 2"} items := []MyBoxItem{} box := MyBox{items} AddItem(box, item1) // Attempt to add item without fixing assignment fmt.Println(len(box.Items))
Ce code tente d'appeler la méthode AddItem sur la structure box et de transmettre item1. Cependant, il ne parvient pas à réattribuer le résultat à la tranche box.Items.
Pour résoudre ce problème, le code doit être modifié comme suit :
func (box *MyBox) AddItem(item MyBoxItem) []MyBoxItem { box.Items = append(box.Items, item) return box.Items }
De plus, puisque la fonction AddItem est défini pour le type *MyBox, il doit être appelé box.AddItem(item1).
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!