TIL: 작동하는 무한 for 루프와 중단되는 루프 간의 현명한 차이점
1980 단어 tricksgotodayilearned
func exampleA() int {
for {
/* do something */
return 1
}
}
이 질문에 대해 잠시 생각해 보십시오. 이 코드는 컴파일 시간에 중단됩니까?
"예, 함수가 닫히기 전에 반환값이 누락되었습니다. 반환 전에 중단이 도입된 다음 코드를 예로 들어 보겠습니다. 이 함수는 어떻게 작동할까요?"; 귀하의 진술과 예가 정확하고
exampleB
실제로 컴파일러에서 누락된 반환 메시지를 받을 것이라는 데 동의합니다.func exampleB() int {
for {
break
return 1
}
}
그러나 함수
exampleA
를 변경하지 않고 마지막에 반환값을 누락하지 않고 어딘가에서 테스트하면(예를 들어 Go's Playground에서) 불평 없이 컴파일되고 실행된다는 사실을 발견하면 매우 놀랄 것입니다.그게 어떻게 가능해?
내부에 break가 없는 무한
for
문은 컴파일러에서 종료 문으로 간주됩니다. 이 문은 문 목록 끝에 있으며 동일한 블록 내에서 추가 문 실행을 차단하는 문입니다.이는 return 문이 없음에도 불구하고 다음 예제도 작동함을 의미합니다.
func exampleC() int {
for {}
}
중단 없는 무한 루프
for
가 Go에 있는 유일한 종료 명령문은 아닙니다. 자세한 내용은 golang 참조 사양this section을 참조하세요.도움이 되었기를 바랍니다. 시간 내서 읽어주셔서 감사합니다!
Reference
이 문제에 관하여(TIL: 작동하는 무한 for 루프와 중단되는 루프 간의 현명한 차이점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mcaci/til-the-smart-difference-between-infinite-for-loops-that-work-and-those-that-break-3llc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)