한 눈에 끝내는 고랭 기초
    • 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)
      최종 코드
    반환값(리턴값)
    11 함수
    반환값(리턴값)

    함수의 제일 기본적인 기능은 입력된 값의 연산 후 출력입니다. 예를 들어, 덧셈 기능을 하는 함수라면 3과 4가 입력됐을 때 7이라는 값이 반환되어야 하는 것입니다. 우리는 이전 강의들에서 Go언어에서 함수 자체의 기능과 입력되는 값인 매개변수에 관해 배웠습니다. 이번 강의는 최종적으로 반환되는 값인 '반환값'에 대한 것입니다.

    다시 매개변수 이야기를 하겠습니다. 다들 아는 것처럼 함수를 선언할 때 매개변수를 굳이 사용하지 않아도 됩니다. 그리고 '가변 인자 함수'를 사용하면 고정된 개수의 매개변수를 전달하지 않아도 됩니다. 이처럼 Go언어는 다른 언어와 다른 반환값의 특징이 있습니다. 바로 Go언어에서는 복수개의 반환값을 반환할 수 있다는 것입니다. 이는 C언어에서 void 혹은 하나의 값만을 반환하는 것과 대조적입니다. 복수 반환값의 몇 가지 특징을 알아보겠습니다.

    • 반환값의 개수만큼 반환형을 명시해야 합니다. 2개 이상의 반환형을 입력할 때는 괄호(())안에 명시합니다.
    • 동일한 반환형이더라도 모두 명시해야합니다.((int, int, int)) 

    굉장히 간단한 용법이기 때문에 아래 예시 코드를 바로 실행해보고 다른 특징을 알아보겠습니다.

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

    위 코드는 저번 강의에서 배운 가변 인자 함수에 슬라이스를 전달하는 것을 활용했습니다. 숫자를 모두 더한 값인 result와 몇개의 매개변수가 전달됐는지 확인하는 count가 반환됩니다.


    Named Return Parameter


    Named return parameter는 직역하면 '이름이 붙여진 반환 인자'입니다. 즉, 이름이 붙여진 반환 값입니다. 여러 개의 값을 반환할 때 괄호 안에 반환형을 모두 명시해야 한다고 했습니다. 그런데 반환 값이 많고 반환형이 다양하다면 가독성이 좋지 않을 수 있습니다. 따라서 Named return parameter는 반환형과 반환 값의 이름을 같이 명시하는 것을 말합니다. 코드 안에서 return 뒤에 명시하던 리턴 값들을 반환형 앞에 명시하는 것입니다. Named return parameter의 몇 가지 특징을 알아보겠습니다.

    • (반환값이름1 반환형1, 반환값이름2 반환형2, 반환값이름3 반환형3, ...) 형식으로 입력합니다.
    • "반환값이름 반환형" 자체가 변수 선언입니다. 따라서 함수 안에서 따로 선언할 필요가 없습니다. 만약 선언하면 에러가 발생합니다.
    • 'return'을 생략하면 안 됩니다. 반환 값이 있을 때는 반드시 return을 명시해야합니다.
    • 반환 값이 하나라도 반환값이름을 명시했다면 괄호 안에 써야합니다.

    Named return parameter 형식을 활용한 아래 코드를 바로 실행해보세요.

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

    위 코드는 일부러 지금까지 배운 기억해야하는 용법을 섞었습니다. 유심히 살펴보면 어렵지 않습니다. 예시 코드에서 주의해야 할 점은 dessertList 함수 안에 inputFruit 함수를 심지어 뒤에 ... 용법까지 사용했습니다. 이는 함수 자체를 전달인자로 사용했다는 것입니다. 이렇게 무조건 함수의 반환값을 변수를 따로 선언해서 초기화할 필요는 없습니다. 필요에 따라 함수를 변수처럼 사용할 수 있습니다. 하지만 코드 가독성을 안 좋게 할 수 있는 요인이 될 수 있기 때문에 잘 사용해야 합니다.

    질문하기