한 눈에 끝내는 고랭 기초
    • 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)
      최종 코드
    구매 구현(2)
    21 실전 프로젝트 - 주문하기, 장바구니 담기
    구매 구현(2)

    이전 강의에서 바로 주문을 선택했을 때 

    • 주문한 물품과 수량만큼 사용자 객체의 포인트 차감
    • 아이템 객체들의 수량 차감

    기능을 어떻게 구현할지 생각해봤습니다. 예시 코드는 아래와 같습니다.

    go

    매인 메뉴에서 잔여 수량 확인을 해보면 구입한 물품에 수량만큼 줄어든 것을 확인할 수 있습니다. 

    지금까지 메뉴를 선택할 때 모두 예외처리를 했습니다. 제시한 번호와 다른 것을 입력받으면 잘못된 입력임을 알려주고 for문의 처음으로 돌아갑니다. 그런데 수량 입력은 아직 예외 처리를 하지 않았습니다. 수량 입력을 제한하지 않는 것은 프로그램에 굉장히 치명적인 버그를 야기할 수 있습니다. 따라서 잘못된 수량을 입력하는 경우는 panic을 발생시키고 복구하겠습니다.

    수량 입력에서 panic을 발생시키는 경우는 두 가지입니다.

    1. 소유 포인트나 잔여 수량이 주문 물품의 포인트와 수량보다 적은 경우
      • "주문이 불가능합니다." 패닉 메시지 전달하고 패닉 발생.
    2. 수량을 음수로 입력한 경우
      • "올바른 수량을 입력하세요." 패닉 메시지 전달하고 패닉 발생.

    따라서 for문을 감싸는 if ~else문이 추가됩니다. 아래 예시 코드를 확인해보세요.

    go

    프로그램이 바로 종료되지 않게 기본적인 복구 코드를 deferrecovery() 를 이용해 만듭니다. 물론 deferbuying() 함수 맨 처음 부분에 나타나야합니다. 에러 메시지는 fmt.Println()을 이용해 출력합니다.

    패닉이 발생하지 않으면 실행하지 않습니다. 기본 복구 코드는 'defer와 recover()' 챕터를 참고하세요. (예시 코드를 보여주지 않겠습니다.)

    이제 바로 주문 기능의 굵은 기능은 완성했습니다. 다음 강의에서는 1. 바로 주문이 아니라 2. 장바구니에 담기를 선택해 선택한 물품을 장바구니에 추가하는 기능을 구현해봅니다.

    질문하기