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

    마일리지 상점의 제일 방대한 기능인 '구매'를 구현해봅니다. 우선 구매를 선택했을 때 모든 항목과 정보들을 출력해야합니다. for문을 활용해 아이템 슬라이스의 모든 객체를 출력합니다. 예를 들어, 구매를 선택하면

    물품1 : 텀블러, 가격: 10000원, 잔여 수량: 30
    물품2: 롱패딩, 가격: 500000원, 잔여 수량: 20
    물품3: 투미 백팩, 가격: 400000원, 잔여 수량: 20
    물품4: 나이키 운동화, 가격: 150000원, 잔여 수량: 50
    물품5: 빼빼로, 가격 : 1200원, 잔여 수량: 500

    형식으로 출력합니다. 그리고 아이템선택 int형 변수를 선언하고 "구매할 물품을 선택하세요: "를 출력해 아이템을 선택할 수 있도록 구현합니다. 아이템 선택은 마찬가지로 for문을 이용해 구현합니다. 잘못된 입력을 하면 계속 처음으로 돌아갑니다.

    go

    구매 과정은 buying() 함수를 이용해 구현할 것입니다. 물품마다 같은 기능이 반복되기 때문입니다. 프로젝트를 제작하면서 어려웠던 것중에 하나는 바로 함수, 변수 이름 설정이었습니다. 제가 제시하는 예시 코드에서의 명명법은 정답이 아닙니다. 더욱 알아보기 쉬운 이름으로 설정한다면 코드 가독성이 높아집니다.

    그리고 main() 함수 밖에 buying() 함수를 생성합니다. 아직 기능을 구현하지 않았기 때문에 아무것도 입력하지 않아도 됩니다. 이쯤에서 사용자가 물품을 구매했을 때 필요한 기능이 어떠한 것이 있을지 생각해보기를 바랍니다.


    바로 주문하기


    구매 기능을 작은 것부터 하나씩 구현할 것입니다. 일단 사용자가 물품을 선택하고 buying() 함수에 진입한 상황이라고 생각해봅시다. 그 다음은 선택한 물품을 몇 개 주문할 것인지 입력하고, 장바구니에 담거나 바로 구매하는 것입니다. 우선 바로 주문하는 것을 구현해봅니다. 올바른 수량을 입력했다는 가정하에(예외(에러) 처리는 나중에 합니다.) 주문을 완료했다면 필요한 기능은

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

    입니다. 이 두 기능을 buying() 함수에 구현해봅니다. 우선, 함수에서 쓰이는 변수를 정리하고 매개변수로 설정해야합니다. 아이템 슬라이스의 아이템 객체 정보에 접근, 구매자 객체정보에 접근, 무슨 아이템을 선택했는지 알기 위해 아이템 선택 변수를 매개변수로 설정합니다. 우선 함수가 실행되면 선택한 물품을 몇 개 주문할지 알아야하기 때문에 사용자가 입력한 수량을 저장할 변수를 선언하고 "수량을 입력하시오 :" 를 출력해 수량을 입력받습니다. 그럼 지금까지 함수 내용은 아래와 같습니다.

    go

    구매자 객체는 포인터 구조체기 때문에 포인터 매개변수를 사용합니다. 수량을 입력했다면 1.바로 구매할 것인지 2. 장바구니에 담을 것인지 선택합니다. 잘못된 번호를 입력하면 "잘못된 입력입니다. 다시 입력해주세요."를 출력하고 계속 다시 선택하게끔 for문을 이용합니다. 바로 주문을 할 경우 위에서 언급한 두 기능을 실행합니다. 그리고 "상품이 주문 접수 되었습니다."를 출력하고 for문을 빠져나갑니다. 장바구니에 담는 기능은 나중에 구현할 것이기 때문에 비워둡니다.

    우리가 원하는 바로 주문을 선택했을 때 

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

    기능을 어떻게 구현할 것인지 잘 생각해보기를 바랍니다. 예시 코드는 다음 챕터에서 보여주겠습니다.

    질문하기