한 눈에 끝내는 고랭 기초
    • 01
      시작하기에 앞서
    • 강의대상
      Go란?
      실습 환경 구축 - 구름IDE
      Hello goorm! 출력해보기
    • 02
      변수와 상수
    • 콘솔 출력 함수의 기본
      변수의 선언과 초기화
      상수의 선언과 초기화
      간단한 덧셈
      잘못된 신상정보
    • 03
      연산자
    • 연산자 종류
      연산자 우선순위
      콘솔 입력 함수의 기본
      간단한 덧셈과 곱셈
      몫과 나머지
    • 04
      자료형
    • 자료형의 종류와 특징
      문자열의 표현
      자료형의 변환
      강제 형 변환
    • 05
      콘솔 출력과 입력 함수
    • 콘솔 출력 함수(Print)
      콘솔 입력 함수(Scan)
      정돈된 표
      신상정보 입력과 출력
    • 06
      반복문 - for
    • 오로지 for
      구구단
      빛나는 이등변삼각형
    • 07
      조건문 - if/else
    • 조건에 따른 실행과 흐름 분기
      7과 9의 배수
      두 수의 차
    • 08
      분기문 - switch
    • swich문에 의한 선택적 실행
      안좋은 계산기
    • 09
      제어문
    • break, continue, goto문
      구구단2
      두 수를 더하면 99
    • 10
      컬렉션
    • 배열(Array)
      슬라이스(Slice)
      맵(Map)
      역행렬
      가장 긴 이름
      중간고사 평균 점수
    • 11
      함수
    • Go언어에서의 함수
      전역변수와 지역변수
      매개변수
      반환값(리턴값)
      익명 함수
      오름차순 정렬
      아이패드를 사주는 조건
      역학적 에너지
    • 12
      클로저
    • 외부 변수 접근 : 클로저
      동전 정리
    • 13
      구조체와 메소드
    • 구조체
      메소드
      성적 저장 프로그램
      역학적 에너지2
    • 14
      인터페이스(interface)
    • 메소드의 집합 인터페이스
      직육면체와 원기둥
    • 15
      defer와 panic()
    • 지연 처리 defer
      종료하는 panic(), 복구하는 recover()
      엘리베이터
      중간고사 평균 점수2
    • 16
      에러 처리
    • 에러 처리의 기본
      에러 출력 및 처리
      중간고사 평균 점수3
    • 17
      고루틴(Goroutine)
    • 비동기 프로세스의 기본
      고루틴의 활용
      고루틴 실습
    • 18
      채널(Channel)
    • 고루틴의 데이터 통로 : 채널
      비동기 채널과 버퍼
      동기 채널
      채널 닫기
      송신 전용, 수신 전용 채널
      채널 select문
      고루틴 실습2
      메시지 전송
      동기 채널 실습
      비동기 채널 실습
    • 19
      패키지(package)
    • 패키지의 개념
    • 20
      실전 프로젝트 - 마일리지 상점
    • 프로젝트를 시작하기 앞서
      실습모드에서 실습
      마일리지 상점의 주요 기능
      필수 구조체와 매인 메뉴
      잔여 수량, 잔여 포인트 구현
    • 21
      실전 프로젝트 - 주문하기, 장바구니 담기
    • 구매 구현(1)
      구매 구현(2)
      장바구니에 담기
      장바구니 확인(1)
      장바구니 확인(2)
    • 22
      실전 프로젝트 - 고루틴으로 배송하기
    • 배송 상태 확인(1)
      배송 상태 확인(2)
      배송 상태 확인(3)
      최종 코드
    break, continue, goto문
    09 제어문
    break, continue, goto문

    코드를 짜다보면 '제어문'이 필요할 때가 있습니다. 특히, 제어문은 반복문에서 대부분 사용됩니다. 왜냐하면, 반복문을 사용하다보면 같은 구문을 반복해서 계속 실행하기 때문에 이를 제어할 상황이 오기 때문입니다.

    예를 들어 "1부터 10까지 계속 순차적으로 출력하다가 3의 배수는 건너뛰어", "1부터 10까지 출력하다가 4가 되면 반복문을 빠져나와",  "1부터 10까지 출력하다가 4가 되면 50부터 80을 출력하는 부분(레이블)으로 가"와 같은 상황이 있을 수 있습니다.

    이렇게 쓰이는 제어문은 바로 반복문을 탈출하는 break, 반복문의 첫부분으로 돌아가는 continue, 특정 부분으로 갈 수 있는 goto 입니다. 하나씩 특징을 살펴보도록 하겠습니다.


    이곳을 빠져나와! - 똑똑한 break


    break문은 쉽게 말해 해당 부분을 빠져나오는 용법입니다. '해당 부분'이라고 표현한 이유는 break는 꼭 for문뿐만이 아니라, switch문과 select문에서도 사용할 수 있기 때문입니다. for문과 동일하게 모든 용법에서 그 쓰임이 동일합니다. 하지만 제어문 자체가 반복문에서 많이 쓰이기 때문에 반복문에서의 쓰임을 중심으로 설명하겠습니다.

    • 첫 번째로, break문은 '직속 for문'을 빠져나오게 해줍니다. 여러 for문이 중첩돼 있는 상황일 때 break문을 쓰면 break문이 있는 for문만 빠져나오게 됩니다. 그리고 해당 for문을 빠져나온 뒤 바로 다름 문장을 실행시킵니다.
    •  두 번째로,  break문은 보통 단독으로 사용되지만, 경우에 따라 "break 레이블이름"과 같이 사용되어 지정된 레이블로 이동할 수 있습니다. 쉽게 말해서 해당 for문을 빠져나옴과 동시에 지정한 레이블로 이동한다는 뜻입니다. 여기서 주의해야할 점이 있습니다. 소제목으로 '똑똑한 break'라고 소개했는데, "break 레이블이름"으로 되어있을 때 직속 for문을 빠져나와 해당 레이블로 이동하고 break문이 바로 빠져나왔던 for문 다음 문장을 실행하게 합니다.  

    아래의 예시를 보고 흐름을 따라간다면 언뜻 무한 루프를 돌 것 같습니다. 하지만 실제로는 "End"를 출력하고 프로그램을 종료합니다. 이는 break TEST1문이 for루프를 빠져나와 TEST1 레이블로 이동한 후, break가 현재 for루프를 건너 뛰고 다음 문장인 fmt.Println("End")로 이동하기 때문입니다.

    go
    실행 결과를 확인해보세요!

    아래 1부터 차례대로 숫자를 더하다가 100이 넘었을때 반복문을 빠져나오는 예시가 있습니다. 바로 실행해보세요.

    go
    실행 결과를 확인해보세요!

    원하는 조건을 걸러주는 continue


    continue문은 소제목에서 보여주다시피 명시한 조건을 이용해 걸러주는 기능을 합니다. continue문은 break문과 다르게 for문과 연관돼서 사용해야만합니다. 왜냐하면 continue문을 만나면 해당 반복문의 조건검사(반복문의 처음) 부분으로 다시 이동하기 때문입니다.

    아래의 예제는 숫자가 1부터 1씩 커질 때 짝수는 걸러서 15까지 출력하는 코드입니다. 바로 실행해보세요.

    go
    실행 결과를 확인해보세요!

    그 곳으로 바로 가줘! - 하지만 잘 안 쓰이는 goto


    goto는 그 이름이 의미하듯이 프로그램의 흐름을 원하는 위치로 이동시킬 때 사용하는 키워드입니다. 위치는 레이블로 표시하는데 "goto 레이블명"을 입력하면 해당 레이블로 흐름이 이동하게 됩니다. 아주 오래전에는 goto의 필요성에 대한 논쟁도 있었지만, 요즘엔 goto의 사용에 부정적인 분위기 입니다. 실제로 근래에 출간되는 프로그래밍 언어 서적중에는 goto를 아예 언급조차 하지 않는 서적도 있을 정도입니다.

    goto를 부정적으로 보는 이유는 '프로그램의 자연스러운 흐름을 방해한다'는 것입니다. 프로그램에 있어서 흐름은 굉장히 중요하기 때문입니다. 그렇다고 해서 꼭 goto문을 써야만 해결할 수 있는 문제 상황도 딱히 존재 하지 않습니다.

    사용하지 않을 거라면 그냥 넘어가도 됩니다. 하지만 알고 사용하지 않는 것과 모르고 사용하지 않는 것에는 차이가 있습니다. 그래서 간단하게 아래 예시를 통해 배워보겠습니다.

    go
    실행 결과를 확인해보세요!
    질문하기