@darknefrit

Почему присваниване значения вложенной структуре работает с указателем, а без указателя неработает?

Подскажите пожалуйста, почему с указателем присваивание значений вложенной структуре работает

type TestStruct struct {
	Id int
	Data map[int]interface{}
}
func main() {
	
	testing := map[int]*TestStruct{}

	testing[0]= &TestStruct{
		Id:0,
	}
	
	testing[0].Data= map[int]interface{}{
		1:"dd",
	}
	
}


А без указателя не работает

type TestStruct struct {
	Id int
	Data map[int]interface{}
}

func main() {
	
	testing := map[int]TestStruct{}

	testing[0]= TestStruct{
		Id:0,
	}
	
	testing[0].Data= map[int]interface{}{
		1:"dd",
	}
	
}
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
Потому что без указателя вам всегда возвращается копия объекта. Вы у этой копии успешно изменяете значение поля, но после этого копия удаляется из памяти.
Чтобы это работало без указателя, надо сделать так:
type TestStruct struct {
	Id   int
	Data map[int]interface{}
}

func main() {
	testing := map[int]TestStruct{}

	testing[0] = TestStruct{
		Id: 0,
	}

	objCopy := testing[0]
	objCopy.Data = map[int]interface{}{
		1: "dd",
	}
	testing[0] = objCopy
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы