한 눈에 끝내는 고랭 기초
    • 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)

    이전 강의에서 수량과 포인트에 대해 장바구니 물품을 가능한지 모두 확인했습니다. canbuy 변수가 false면 주문이 불가능하고, true면 가능한 것입니다. 불가능하면 "구매할 수 없습니다."를 출력하고 for문을 빠져나갑니다. 따라서 

    go

    형식을 만들 수 있습니다. 이제 주문 기능을 구현하는데 이제는 구매 기능과 거의 똑같습니다. 이 기능은 마찬가지로 따로 함수를 만들어 구현하겠습니다. 함수 이름은 bucketBuying()입니다.

    장바구니에 접근해 구매 기능과 마찬가지로 (장바구니 품목 == 품목 리스트)면 장바구니 품목의 수량과 사용자의 포인트가 차감되어야합니다. 함수의 매개변수들은 (itm []item, byr *buyer)입니다. 품목의 수량을 장바구니 수량만큼 차감하고 사용자 포인트도 차감했다면 장바구니를 초기화하고 "주문이 접수됐습니다."를 출력합니다. 

    이렇게하면 장바구니의 품목 주문이 구현됩니다.

    go
    go
    그리고 bucketBuying() 함수 내에서 장바구니의 물품이 존재하지 않는데 주문할 경우"주문 가능한 목록이 없습니다."를 panic으로 발생시키고 지난 강의와 같은 방법으로 복구합니다. 이렇게한다면
    go

    형식으로 수정할 수 있습니다. 이제 1. 장바구니 상품 주문 2. 메뉴로 돌아가기까지 구현됐습니다. 그런데 주문할 수 없으면 장바구니에 등록된 품목을 수정할 수 있어야합니다. 그렇지 못하면 계속 주문이 불가능한 상태로 남아있기 때문입니다. 그래서 '장바구니 초기화' 기능을 추가해

    1. 장바구니 상품 주문
    2. 장바구니 초기화
    3. 메뉴로 돌아가기

    메뉴 형식으로 기능을 추가해 봅니다. 당연히 장바구니를 초기화하려면 buyer.shoppingbucket = map[string]int{}를 사용하면 되겠죠? 초기화한 후에는 "장바구니를 초기화했습니다."를 출력합니다. 추가한 모습은 아래와 같습니다.

    go
    질문하기