한 눈에 끝내는 고랭 기초
    • 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)
      최종 코드
    자료형의 종류와 특징
    04 자료형
    자료형의 종류와 특징

    변수는 데이터의 저장을 위해서 할당된 메모리 공간에 붙여진 이름입니다. 그런데 메모리 공간 할당에 앞서 할당된 메모리에 정수를 저장할 것인지, 실수를 저장할 것인지 결정되어야합니다. 또한, 정수를 저장한다면 몇 바이트의 크기를 사용할 것인지도 정한 후에 할당하는 것이 좋습니다. 이렇게 어떤 데이터를 저장할 지 표현하는 것이 '자료형'입니다. Go언어에서 쓸 수 있는 자료형은 부울린(bool) 타입, 문자열 타입, 정수형 타입, 실수 타입, 복소수 타입 그리고 기타 타입들이 있습니다.  Go언어의 특징으로는 ':=' 용법을 활용한 자료형 추론이 가능합니다. 예를 들어 정수값은 int로 실수 값은 float32로 자동 할당됩니다. 이제 자료형의 종류를 알아보겠습니다.


    몇 바이트인지는 어떻게 알죠?


    자료형은 데이터의 형이 무엇인지 알려주는 역할도 하지만 메모리를 몇 바이트 할당할 것인지 정하는 것도 중요합니다. 이때 개발자 분들은 다른 언어들을 사용하면서 'sizeof'라는 함수에 익숙할 것입니다. Go언어에서도 자료형의 크기를 알 수 있는 sizeof 함수를 사용할 수 있습니다. 우선 코드 상단에 import "unsafe"를 입력하면 "unsafe.Sizeof(변수)" 형태를 사용하여 선언한 자료형의 size를 알 수 있습니다.


    부울린(Boolean) 타입


    부울린 타입은 "참/거짓"을 할당할 수 있는 자료형입니다. 다른 언어에서는 0과 1혹은 0과 다른 숫자로 표현하여 거짓과 참을 표현할 수 있지만 Go언어에서는 오로지 'true'와 'false'만 사용하여 할당할 수 있습니다. 그리고 부울린 타입은 1바이트로 할당됩니다.


    자료형선언크기(byte)
    부울린bool1


    정수 타입


    자료형을 선언할 때 가장 많이 쓰이는 정수형 타입입니다. 눈에 띄는 자료형은 uintptr인데 이는 포인터의 비트 패턴을 할당할만한 크기의 자료형입니다. 주로 포인터의 주소를 할당할 때 사용합니다. Go언어에서는 한눈에 자료형의 크기를 확인할 수 있게 int16, int 32와 같은 형태로 표현합니다. 뒤에 붙은 숫자는 비트를 의미합니다. 즉, int32는 32비트의 크기를 의미합니다.  그리고 앞에 "un"이 붙은 자료형은 C언어와 다른 언어들에서 쓰이는 0과 양의 정수만 표현하는 'unsigned'와 같습니다. 예를 들어 uint는 C언어에서의 unsigned int와 같습니다. 아시다시피 unsigned 선언은 양수만 표현하는 것이기 때문에 음수 표현 범위가 줄어든 만큼 양수 표현 범위가 두 배가 됩니다.


    자료형선언크기(byte)
    정수형(음수포함)
    intn비트 시스템에서 n비트
    int81
    int162
    int324
    int648
    정수형(0, 양수)
    uintn비트 시스템에서 n비트
    uint81
    uint162
    uint324
    uint648
    uintptr8


    int와 uint는 최소 4바이트 크기의 데이터 타입입니다. 이는 32비트 시스템에서는 4바이트(32비트) , 64비트 시스템에서는 8바이트(64비트)입니다. 그렇다고 해서 int32, uint32, int64, uint64의 별칭이 아니라 구별되는 하나의 형식입니다.


    실수 및 복소수 타입


    실수형과 정수형 타입은 비교적 표현할 수 있는 값의 범위가 매우 넓습니다. 이러한 자료형의 중요한 선택 요소는 '정밀도'입니다. 표를 확인하고 적절한 자료형을 사용합시다. 복소수 선언은 3+4i 처럼 선언할 수 있습니다.


    자료형선언크기(byte)
    실수
    float324
    float648
    복소수
    complex648
    complex12816


    문자열 타입


    문자열 타입은 ""와 같이 비어있을 수 있고, 다른 언어에서 표현되는 null과 같이 Go언어에서 사용되는 nil이 아닐 수 있습니다. string으로 선언한 문자열 타입은 immutable 타입으로서 값을 수정할 수 없습니다.

    예를 들어, var str string = "hello"와 같이 선언하고 str[2] = 'a'로 수정이 불가능합니다.

    자료형선언크기(byte)
    문자열string16

     

    기타 타입


    기타 타입은 byte와 rune 자료형이 있습니다. byte는 uint8과 똑같은 자료형이라고 생각할 수 있습니다. 바이트 값을 8비트 부호없는 정수 값과 구별하는 데 사용됩니다.  그리고 rune은 int32와 똑같은 자료형이라고 볼 수 있습니다. 관례상 문자 값을 정수 값과 구별하기 위해 사용합니다.


    자료형선언크기(byte)
    정수(0, 양수)byte1
    정수rune4
    질문하기