반복문/함수에서 goto의 장점은 뭔가요?

조회수 2684회

학교에서 goto는 절대 어떤 경우에도 쓰지 말라고 배웠는데 libavcodec을 보니 의외로 아직도 goto를 쓰는 사람이 많더군요

반복문/함수에서 goto의 장점이 뭐길래 쓰지 말라는데 자꾸 쓰는건가요?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    함수의 메모리 해제

    동적 할당이 있는 함수에서는 함수를 나갈 때 바로 종료하지 않고 할당된 부분을 free 해줘야 합니다.

    보통 맨 뒤에서 free 해주는 경우가 많기 때문에 여기에 라벨을 붙여 goto문을 쓰면 메모리 해제하는 부분을 일괄적으로 처리할 수 있습니다

    중첩된 반복문 빠져나가기

    goto가 유용하게 쓰이는 경우는, 중첩된 반복문에서 맨 안쪽 반복문에서 조건이 안 맞으면 모든 반복문을 중단하는 코드가 필요할 때입니다.

    goto를 쓰지 않는다고 하면 flag를 세워서 각 조건문마다 flag를 확인하는 코드를 만들어 줘야 합니다. goto를 쓰면 한 번에 해결할 수 있어서 코드 길이가 훨씬 더 많이 줄고 이해하기 쉬워지지요

    이 외에도 여러 가지 장점이 있지만 더 적지는 못할 것 같네요. 그리고 보통 goto는 쓰지 않는 게 좋다고 하지만 breakexit, continue는 뜯어보면 전부 goto를 포함하고 있기 때문에 우리는 이미 다른 형태로 goto를 쓰고 있다고 봐야 합니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)