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

    이전 강의에서 바로 주문의 큰 기능은 완성했습니다. 그럼 이번에 2. 장바구니에 담기를 선택했을 때 선택한 물품을 장바구니에 추가하는 기능을 구현해봅니다. 드디어 구매자 객체(이하 buyer)에 point 필드 뿐만이 아니라 shoppingbucket 필드도 사용합니다. 장바구니 담기는 단순히 생각하면 사용자가 선택한 물품과 수량을 그대로 shoppingbucket에 key와 value 값으로 저장하는 것입니다. 단순하게 생각하면 byr.shoppingbucket[itm[itmchoice-1].name] = inputamount만 입력하면 될 것 같지만 이렇게 한다면 장바구니에 이미 존재하는 품목을 추가한다면 품목이 여러번 중복돼서 추가됩니다. 그래서 추가하는 품목이 장바구니 안에 존재 하는지 알아야합니다. 이미 존재한다면 수량만 증가시키고, 존재하지 않는다면 위에 방법대로 추가만 하면 됩니다.

    우선 추가하는 물품이 이미 장바구니 안에 존재하는지 판별하는 코드를 작성합니다. 변수를 선언하고 결괏값으로 true/false를 초기화합니다. 그래서 물품이 있을때와 없을때를 나눠서 장바구니에 물품을 다른 방식으로 추가합니다. 아래 예시 코드를 확인해보세요.

    go

    여기서 예외처리를 해야하는 것이 있습니다. 처음에 입력한 수량은 잔여 수량보다 컸을때 예외처리가 되도록 했습니다. 그런데 만약 장바구니에 잔여수량이 30개인 텀블러를 10개씩 5번 장바구니에 담으면 50개가 저장되어 잔여수량보다 커지게 됩니다. 이런 오류를 방지하기 위해 장바구니 각 품목의 수량이 잔여 수량보다 크면 장바구니에 담을 수 없게끔 해야합니다. 따라서 현재 추가하려는 품목의 수량 + 기존 장바구니에 있는 품목의 수량 > 잔여 수량 일 때 추가할 수 없게끔 코드를 작성합니다. 

    아래는 예외 처리 기능을 추가한 코드입니다.

    go

    여기까지 구현했다면 바로 주문했을 때 품목의 잔여 수량과 사용자의 포인트가 차감되는 것까지 완성했습니다. buying() 함수도 디테일한 기능을 제외하고는 완성한 것입니다. 다음 강의에서 '장바구니 확인' 기능을 구현해봅니다.

    질문하기