Есть код, где я работаю со структурой.
Мне нужно для определенной работы, выбрать нужную структуру по ключу - поработать с ней, изменить элементы массивов, выполнить запросы. И так я могу вызывать эту структуру несколько раз.
Но после первой же обработки структуры, изменяя элементы массива в копии структуры - меняется также значение элементов массива (слайса) в глобальном Мапе
Как исправить это? Или как избавиться от такого поведения и добиться, чтобы значения в глобальном Мапе не изменялись, а изменялись лишь во временной структуре для работы?
Вот код
package main
import "fmt"
type typeElMap struct {
Name string
Data []string
}
var MainData map[string]typeElMap
func main(){
MainData = make(map[string]typeElMap,0)
MainData["key"] = typeElMap{Name:"Digit", Data: []string{"1","2","3"}}
tmp := MainData["key"]
// WORK
tmp.Name = "NEW NAME"
tmp.Data[0] = "A"
// END WORK
fmt.Println(MainData["key"]) // Результат {Digit [A 2 3]} - имя НЕ поменялось, а массив изменился
a:= []int{1,2,3}
b := a
b[0] = 777
fmt.Println(a) // Тоже результат [777 2 3]
}