[Go] #4.1 자료형의 종류와 특징

[Go] #4.1 자료형의 종류와 특징

강의 링크 : 한 눈에 끝내는 고랭 기초 #3 자료형 - 자료형의 종류와 특징


1. 자료형의 종류와 특징


변수는 데이터의 저장을 위해서 할당된 메모리 공간에 붙여진 이름이다.

그런데 메모리 공간 할당에 앞서, 할당된 메모리에 정수를 저장할 것인지, 실수를 저장할 것인지가 결정되어야 한다.

또한, 정수를 저장한다면 몇 바이트의 크기를 사용할 것인지도 정한 후에 할당하는 것이 좋다.

이렇게 어떤 데이터를 저장할 지를 표현하는 것이 자료형 이다.

Go 에서 쓸 수 있는 자료형은 다음과 같다.

  • 부울린(bool) 타입
  • 문자열 타입
  • 정수형 타입
  • 실수 타입
  • 복소수 타입
  • 기타 타입들

Go 언어의 특징인 := 용법을 활용한 자료형 추론이 가능하다.

예를 들어 정수값은 int , 실수 값은 float32 로 자동 할당된다.

이와 같은 자료형의 종류를 알아보자.

I. 몇 바이트인지는 어떻게 아는가?


자료형은 데이터의 형이 무엇인지 알려주는 역할도 하지만, 메모리를 몇 바이트 할당할 것인지 정하는 것도 중요하다.

이때 다른 언어에서 보통 sizeof 함수를 사용하는데, Go 언어에서도 동일한 함수를 사용할 수 있다.

이를 위해 코드 상단에 import "unsafe" 를 입력하면 unsafe.Sizeof(변수) 형태를 사용하여 선언한 자료형의 크기를 알 수 있다.

II. 부울린(Boolean) 타입


보통 불, 불린, 불리언 등으로 부르는데, 구름에서는 부울린이라고 하나보다.

살짝 궁금해져서 찾아봤더니, 원문이 수학자인 조지 불(George Boole)의 이름에서 유래하였다고 한다.
~의 를 의미하는 -an 이 붙어 Boolean 이 되어 버렸지만, 올바른 표기는 불의 연산자(Boolean Operator) 이므로 이라고 부르는게 맞다고 한다.
해당 글에서는 구름에서 채택한 용어인 부울린을 일단 따르도록 하겠다.

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

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

III. 정수 타입


자료형을 선언할 때 가장 많이 쓰이는 정수형 타입이다.

1

이 중 눈에 띄는 것은 uintptr 인데 이는 포인터의 비트 패턴을 할당할만한 크기의 자료형이다.
주로 포인터의 주소를 할당할 때 사용한다.
Go 언어에서는 한눈에 자료형의 크기를 확인할 수 있게 int16 , int32 와 같은 형태로 표현하고, 뒤에 붙은 숫자는 비트를 의미한다.
즉, int32 는 32비트의 크기를 의미한다.

그리고 앞에 u 가 붙은 자료형은 C 언어와 다른 언어들에서 쓰이는 0과 양의 정수만 표현하는 unsigned 와 같다.
예를 들어 uintC 언어에서의 unsigned int 와 같다. unsigned 선언은 0과 양수만 표현하는 것이기 때문에 음수 표현 범위가 줄어든 만큼 양수 표현 범위가 두 배가 된다.

IV. 실수 및 복소수 타입


실수형과 정수형 타입은 비교적 표현할 수 있는 값의 범위가 매우 넓다.
이러한 자료형의 중요한 선택 요소는 정밀도 이다.
복소수 선언은 3+4i 처럼 선언할 수 있다.

2

복소수는 써 본 적이 없는 것 같은데, Go 에서는 사용하게 될 지 의문이다.

V. 문자열 타입


문자열 타입은 "" 와 같이 비어있을 수 있고, 다른 언어에서 표현되는 null 과 같이 Go 언어에서 사용되는 nil(널 포인터의 이름) 이 아닐 수 있다.
string 으로 선언한 문자열 타입은 immutable(불변) 타입으로서 값을 수정할 수 없다.

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

3

VI. 기타 타입


기타 타입은 byterune 자료형이 있다.

byteuint8 과 똑같은 자료형이라고 생각할 수 있다.
바이트 값을 8비트 부호 없는 정수 값과 구별하는데 사용된다.

그리고 runeint32와 똑같은 자료형이라고 볼 수 있다.
관례상 문자 값을 정수 값과 구별하기 위해 사용한다.

4


© 2022. All rights reserved.