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

    이번 강의에서는 프로그래밍의 가장 대표적인 함수인 '콘솔 출력 함수'에 대해 알아보겠습니다. 다른 언어를 사용해본 개발자들은 printf, 혹은 System.out.println()와 같은 용법에 익숙할 것입니다.

    Go언어에서 사용하는 fmt 패키지의 콘솔 출력 함수는 Println, Print, Printf 외에도 파일 출력을 위한 Fprintln, Fprint, Fprintf와 string형으로 반환되는 Sprintln, Sprint, Sprintf가 있습니다. F함수들은 파일 출력을 위해 사용되고 사용법이 크게 다르지 않기 때문에 이 챕터에서 다루지 않겠습니다. 그리고 Print와 같은 함수들도 사실 반환 값을 갖습니다. S함수들은 반환 값을 string 형으로 출력하는 함수입니다. 특별한 용도에 사용되고 표준 출력을 하지 않기 때문에 마찬가지로 이번 챕터에서 다루지 않겠습니다.

    따라서 Println, Print, Printf 함수들이 어떤 특징이 있는지 차이점을 중점으로 설명하겠습니다.


    import "fmt"


    코드 상단에 import "fmt"를 선언함으로써 fmt 패키지를 사용할 수 있는데, 이는 C언어의 입/출력 함수인 printf와 scanf 함수같은 유사한 함수들을 형식화한 입/출력을 함수를 사용할 수 있다는 뜻입니다.

    쉽게 말해서, 콘솔 입력 함수와 콘솔 출력함수를 사용하기 위해서는 fmt 패키지를 import 해야합니다.


    Println, Print


    선언출력 형태
    Println개행 자동 추가
    Print개행 자동 추가하지 않음
    Printf포멧 지정자를 이용하여 개발자가 원하는 형태로 출력


    Println 함수는 사용할 때마다 자동으로 개행이 되어서 출력됩니다. 하지만 Print 함수는 개행을 하지 않기 때문에 문자열(이중인용부호("") 혹은 Back Quote)내에서 이스케이프 시퀀스인 '\n'을 입력해 개행해야합니다. 하지만 두 함수는 하나의 인자를 출력할 수도 있고 여러 개의 인자를 콤마로 결합해 열거할 수 있다는 점에서 공통점이 있습니다.


     아래 Println과 Print 함수를 사용한 예시 코드가 있습니다. 바로 실행해보세요.

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

    Printf


    Printf 함수는 C언어의 Printf 함수와 유사합니다. Go언어에서도 개발자가 포멧을 지정하여 원하는 형태로 출력할 때 사용합니다. 여기서 주의해야 할 점은 반드시 포멧을 지정해줘야 한다는 것입니다. 예를 들어 a := 5일 때 fmt.Printf(a)를 입력해 출력할 수는 없습니다. 한 개의 인자라도 출력하기 위해서는 fmt.Printf("%d", a) 형식으로 입력해야합니다. 그리고 C언어와는 다르게 조금 더 편리한 점은 배열을 한번에 출력이 가능하다는 것입니다. 예를 들어, C언어에서는 int arr[3] = {1, 2, 3}일 때  printf("%d", arr)이 불가능하고, Go언어에서는 var arr [3]int = [5]int{1, 2, 3}일 때  fmt.Printf("%d", arr)이 가능합니다.

    마지막으로 Print 함수와 동일하게 자동 개행이 되지 않습니다. 따라서 개행을 하기위해서는 '\n'을 입력해야합니다.


    아래 코드를 바로 실행해보세요.

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

    서식문자의 종류와 그 의미


    Printf 함수를 사용하면서 포멧을 지정해줄 때 '%d'와 같은 문자를 사용합니다. 이는 값을 입력하고 출력하는 데 있어서 서식을 지정하는 것입니다. 예를 들어,

    "제 나이는 10진수로 %d살, 16진수로는 %X살 입니다."

    라고 포멧을 지정할 수 있습니다. %d는 10진수 정수의 형태로 출력한다는 의미이며, %X는 데이터를 16진수로 출력하되, 알파벳은 대문자로 출력한다는 의미입니다. 이러한 %d와 %X를 가리켜 '서식문자'라고 합니다. 

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

    자세한 서식문자의 종류와 의미를 표를 통해 확인해보겠습니다.


    서식문자출력 형태
    %tbool
    %b2진수 정수
    %c문자
    %d10진수 정수
    %o8진수 정수
    %x16진수 정수, 소문자
    %X16진수 정수, 대문자
    %f10진수 방식의 고정 소수점 실수
    %F10진수 방식의 고정 소수점 실수
    %e지수 표현 실수, e

    %E

    지수 표현 실수, E
    %g간단한 10진수 실수
    %G간단한 10진수 실수
    %s문자열
    %p포인터
    %U유니코드
    %T타입
    %v모든 형식
    %#v#을 이용해구분할 수 있는 형식 표현


    C언어와는 몇 가지 다른 점이 있습니다. C언어에서는 %u와 %x등과 같은 부호의 여부에 따라 표현이 다른 서식문자들이 있습니다. 그리고 Go언어에서는 %v 문자를 이용해 변수의 타입에 관계없이 출력할 수 있습니다. 표에 적어놓은 출력 형태에 실수, 정수라고 표현한 것은 정수는 정수 타입으로, 실수는 실수 타입으로만 출력할 수 있다는 것입니다. 그리고 포인터 서식문자인 %p는 값이 참조하는 주소값을 반환하는 서식문자입니다.

    그리고 출력하는 형태를 따로 지정할 수 있습니다. 원하는 출력 폭을 지정할 때는 "%(폭)d" 형식으로 입력하고, 지정한 출력 폭에 0을 채워넣고 싶으면 "%0(폭)d"형식으로 입력하고, 출력할 때 왼쪽부터 출력을 원한다면 "%-(폭)d"형식으로 입력합니다. 그리고 출력할 소수점 이하 자리를 지정할 때 "%.(자릿수)f"형식으로 지정할 수 있습니다.


    아래 코드를 바로 실행해보세요.

    go
    실행 결과를 확인해보세요!
    질문하기