goto 문장의 대체 실현 방식 분석을 깊이 이해하다
얼마 지나지 않아 goto는 또 만악의 우두머리가 되었다
얼마 지나지 않아, goto는 교과서의 예시에만 나타났다
goto를 사용하지 못하게 하는 이유가 너무 많은데, 때때로 우리는 또 goto의 기능을 사용하고 싶은데 어떡하지?
try/catch/finally를 사용하면 goto와 같은 기능을 실현할 수 있다. 두 가지 예를 들어 다음과 같다.
try {
// operation one
if (failed) {
throw Exception;
}
// operation two
if (failed) {
throw Exception;
}
// operation three
if (failed) {
throw Exception;
}
} catch (Exception e) {
// do something when cases failed
}
및:
try {
// operation one
if (failed) {
return;
}
// operation two
if (failed) {
return;
}
// operation three
if (failed) {
return;
}
} finally {
// do something when failed
}
위의 두 단락은 모두 다음과 같습니다.
// operation one
if (failed) {
goto when_failed;
}
// operation one
if (failed) {
goto when_failed;
}
// operation one
if (failed) {
goto when_failed;
}
when_failed:
// do something when failed
이상한 방식으로 폭력적이지만 goto와 같은 기능을 실현하는 데 정확한 도움을 줄 수 있다.리턴과finally를 사용하는 것은 폭력적이지는 않지만 통제하기 어렵다. 리턴 문장과 관련되어 있기 때문에finally 블록이 실행된 후에 실행할 수 있기 때문에 프로그램을 종료하지 않으려면 이상으로 제어하는 것이 낫다.
또한break,continue도 비교적 강한 점프 문장이다. 특히break label과continue label은 한 층의 순환이나 여러 층의 순환을 뛰어넘을 수 있다.그러나 주의해야 할 것은break는 순환문장과 switch문장에서만 사용할 수 있고,continue는 순환문장에서만 사용할 수 있다는 것이다.그래서 그것들의 한계도 크다.
이 작은 예는 goto가 단지 하나의 문장이 아니라 문제를 해결하는 사고방식과 프로그래밍 습관이다. goto에 익숙해진 사람이나 그것을 사용하고 싶은 사람은 goto를 사용하지 않아도 비슷한 goto 논리를 쓸 수 있다는 것을 설명한다.그것의 장점은 해결 방안을 찾아내는 데 더욱 쉽다는 것이다.그것의 결점도 모두가 알고 있다.그러나 우리가 피해야 할 것은 단지 하나의 goto 문장이 아니라 이런'점프식'의 해결 사고방식과 프로그래밍 습관이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.