I've never worked with C/C++, so I'm a bit stuck with pointers in go. The problem is: I have a map[string][]InteractiveItems
for each "room" and I wanna change slice of it in a function. Here it is:
func (r *room) getItem(arg string) InteractiveItem {
for i, val := range r.interactiveItems {
for _, item := range val {
if item.getName() == arg {
var idxToDelete int
for idx := range val {
if val[idx].getName() == arg {
idxToDelete = idx
break
}
if len(val) == 0 {
delete(r.interactiveItems, i)
}
}
val = append(val[:idxToDelete], val[idxToDelete+1:]...)
return item
}
}
}
return nil
Obviously, val
is changing inside the function, but room's map is not. How should I deal with pointers to delete the element of a slice?