package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("Hello, playground")
for i := 0; i < 5; i++ {
go func() {
time.Sleep(time.Duration(100 * i))
fmt.Println(i)
}()
}
time.Sleep(10000)
}
고 언어에서 이렇게 하면 결과값 전부 5로 나온다
근데 상식적으로 생각하면 당연히 저게 실행될 순간에는 i 값이 5가 되는게 맞기 때문에 이게 맞다
자스에서 스코프 문제가 아니라 익명함수 쓰면 그 안에서 사용되는 변수값 알아서 찾아내서 값 복사 시키는거 아닐까
go func 위치 main 밖으로.
해당 댓글은 삭제되었습니다.
당연히 그게 맞지 근데 개념글에 보면 자스에서는 알아서 값 복사시키던지 하는건지 일반 상식이랑 다르게 작동하잖아
해당 댓글은 삭제되었습니다.
어차피 일할 때는 디버깅 하다가 그런갑다하고 넘어가면 될 문제기는 한데 생각보다 심오한 주제인 건 맞는듯
얘 부들거리면서 xx타령하는건 또 첨보네...