공부/Go
Go에서 배열 구조체를 포함한 구조체의 값 변경할 때 주의사항
토고미
2023. 12. 14. 20:40
Go에서 이미 값이 할당된 다중 구조체(nested structure)의 내부 배열 구조체에 어떤 값을 변경할 때는
for 문에서 인덱스를 사용해서 직접 접근해야한다.
가끔 습관적으로 for k, v := range S 를 하며 v를 통해 값을 할당하는 실수를 저지르게 된다.
type Outer struct {
name string
inner []Inner
}
type Inner struct {
A int
B int
}
func changeInner() {
outer := Outer{
name: "togomi",
inner: []Inner{
{
A: 5,
B: 6,
},
},
}
for k, v := range outer.inner {
// 잘못된 방법
v.A = 1
v.B = 2
// 옳은 방법
outer.inner[k].A = 1
outer.inner[k].B = 2
}
}