슬라이스 돌면서 각 원소를 고루틴으로 출력하려는데 결과가 이상해요. 1 2 3 나올 줄 알았는데 3 3 3만 찍힙니다.
func main() {
for _, v := range []int{1, 2, 3} {
go func() {
fmt.Println(v)
}()
}
time.Sleep(time.Second)
}
순서는 뒤바뀌어도 상관없는데 왜 세 개 다 3만 나오는 걸까요? 각 반복마다 v 값이 따로 캡처될 거라 생각했거든요. 참고로 저는 1.20 쓰고 있습니다. 버전이랑 관련 있다는 얘기도 봤는데 정확한 원리랑 해결법 알려주시면 감사하겠습니다.