Это потому, что все в Go передается по значению.
Для вашего случая это означает, что при выполнении итерации по карте на каждой итерации переменной val
присваивается значение копия соответствующего значения среза.Поэтому повторное нарезание значения val
внутри цикла не влияет на исходный срез внутри карты, поскольку один является копией, а не ссылкой на другой.
Чтобы изменить срез, находящийся внутрикарту, которую вы можете переназначить результат операции append
на соответствующий ключ карты.
r.interactiveItems[i] = append(val[:idxToDelete], val[idxToDelete+1:]...)
Имейте в виду, что при копировании среза он не копирует данные, на которые указывает срез, он копирует только «дескриптор» среза.