한 눈에 끝내는 고랭 기초
    • 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)
      최종 코드
    콘솔 입력 함수(Scan)
    05 콘솔 출력과 입력 함수
    콘솔 입력 함수(Scan)

    이번 강의에서는 콘솔을 통해 값을 입력받는 콘솔 입력 함수에 대해 알아보겠습니다. 다른 언어를 사용해본 개발자들은 scanf, new Scanner(system.in)와 같은 용법에 익숙할 것입니다.

    Go언어의 콘솔 입력 함수는 C언어와 크게 다르지 않습니다. Go언어는 Scanln, Scan, Scanf 함수가 있습니다. 각각 어떤 특징이 있는지 차이점을 중점으로 설명하겠습니다.


    Scanln, Scan, Scanf


    선언입력 형태
    Scanln공백으로 구분하여 입력
    Scan공백과 개행으로 구분하여 입력
    Scanf포멧 지정자를 이용하여 개발자가 원하는 형태로 입력


    Scanln 함수는 데이터를 입력받을 때 공백으로만 구분할 수 있습니다. 이 말은 엔터 즉 개행을 하면 입력이 완료된다는 것을 의미합니다. 반대로, Scan 함수는 개행을 입력(엔터)하는 것 또한 데이터를 구분하는 입력 방식으로 인식됩니다. 데이터를 3개 받는다고 가정했을 때 Scanln(&num1, &num2, &num3)는 숫자 세개를 모두 입력받고 엔터를 입력해야합니다. 반면에, Scan(&num1, &num2, &num3)은 숫자를 입력할 때마다 엔터(개행)를 입력해서 입력받을 수 있습니다.

    그리고 Scanf는 개발자가 만들어놓은 형식으로 입력받을 수 있습니다. 예를 들어,  주민등록번호를 입력받기 위해 Scanf("%d-%d", &num1, &num2)으로 만들었을 때 940101-0000000이라고 입력하고 엔터를 입력하면  num1에는 940101이, num2에는 0000000이 입력됩니다.


    아래 각 함수의 특징들을 이용한 예시가 있습니다. 바로 실행해보세요.

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

    만약, 위 코드를 실행하고 이름(name)만 입력한 상태에서 엔터를 입력하면 입력이 끝나게 됩니다. 따라서 genschool값은 ""(공백)이 됩니다.

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

    위 코드는 Scan 함수를 사용하였기 때문에 입력할 때마다 엔터를 입력해 각각 값을 입력할 수 있습니다.

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

    Scanf 함수를 이용하여 개발자가 만든 포멧에 따라 입력받을 수 있습니다.

    질문하기