한 눈에 끝내는 고랭 기초
    • 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)
      최종 코드
    메시지 전송
    배우기
    18 채널(Channel)
    메시지 전송

    select문을 사용해 채널 데이터 수신을 하는 실습을 해봅니다. 실습 내용은 10초안에 메시지를 입력해 발송하고 발송된 메시지 내용을 확인하는 것입니다.


    sendMessage() 함수를 이용해 사용자에게 메시지를 입력받고 데이터를 채널에 송신합니다. default문을 활용해 데이터가 송신되지 않았다면 1초마다 "(남은 시간)초안에 메시지를 입력하세요."를 출력합니다. 시간이 종료되면 "메시지 발송에 실패했습니다."를 출력하고 프로그램을 종료합니다. 사용자가 입력하고 메시지가 송신됐다면 case문을 활용해 "(메시지 내용) 메시지가 발송되었습니다."를 출력하고 프로그램을 종료합니다.


    이렇게 select문의 default 키워드를 사용하면 main() 함수의 루틴에서 데이터가 송신되지 않고도 데드락이 걸리지 않습니다. 이를 실습해봅니다.

    실습 내용
    • main() 함수 내에 string형 채널을 생성합니다. 그리고 고루틴으로 sendMessage() 함수를 호출합니다.
    • sendMessage() 함수에서 string형 변수를 선언하고 사용자에게 메시지를 입력받습니다. 입력받으면 채널에 데이터를 송신합니다.
    • main() 함수 내에 for문이 있고 그 안에 select문이 있습니다. 데이터를 수신하지 않으면 1초에 한 번씩 "(남은 시간) 초 안에 메시지를 입력하시오."를 출력합니다. 시간이 끝났으면 "메시지 발송에 실패했습니다."를 출력합니다.
    • case를 이용해 데이터를 수신하면 "(메시지) 메시지가 발송되었습니다."를 출력하고 프로그램을 종료합니다.


    이 실습문제는 입/출력 값을 가지고 채점하지 않습니다. 설명과 같이 프로그램 실습을 해보고 수신 대기 때문에 블락이 걸리지 않는 채널 select문을 연습해보세요.

    질문하기