Go 데이터 타입
다음은 Go 언어의 모든 내장 타입을 나열한 것으로 참고용으로 사용하시며, 더 많은 세부사항은 참조 매뉴얼 - 타입 에서 확인하실 수 있습니다.
불리언 타입
불리언 타입은 참값과 거짓값만 있습니다.
| 타입 | 설명 |
|---|---|
bool | true는 참값, false는 거짓값 |
TIP
Go 에서 정수 0 은 거짓값을 나타내지 않으며, 0 이 아닌 정수도 참값을 나타낼 수 없습니다. 즉, 숫자는 불리언 값을 대신하여 논리 판단을 할 수 없으며, 두 타입은 완전히 다릅니다.
정수형
Go 는 서로 다른 비트 수의 정수에 대해 서로 다른 타입을 할당하며, 주로 무부호 정수와 부호 정수로 나뉩니다.
| 순서 | 타입 및 설명 |
|---|---|
uint8 | 무부호 8 비트 정형 |
uint16 | 무부호 16 비트 정형 |
uint32 | 무부호 32 비트 정형 |
uint64 | 무부호 64 비트 정형 |
int8 | 부호 8 비트 정형 |
int16 | 부호 16 비트 정형 |
int32 | 부호 32 비트 정형 |
int64 | 부호 64 비트 정형 |
uint | 무부호 정형 최소 32 비트 |
int | 정형 최소 32 비트 |
uintptr | 무부호 64 비트 정형과 동일하지만 포인터 연산에 전용되며, 죽은 포인터 주소를 저장하는 데 사용됩니다. |
부동소수점형
IEEE-754 부동소수점으로, 주로 단정밀도 부동소수점과 배정밀도 부동소수점으로 나뉩니다.
| 타입 | 타입 및 설명 |
|---|---|
float32 | IEEE-754 32 비트 부동소수점 |
float64 | IEEE-754 64 비트 부동소수점 |
복소수 타입
| 타입 | 설명 |
|---|---|
complex128 | 64 비트 실수와 허수 |
complex64 | 32 비트 실수와 허수 |
문자 타입
Go 언어 문자열은 완전히 UTF-8 과 호환됩니다.
| 타입 | 설명 |
|---|---|
byte | uint8 와 동일하며 ANSCII 문자 표현 가능 |
rune | int32 와 동일하며 Unicode 문자 표현 가능 |
string | 문자열은 바이트 시퀀스로, []byte 타입인 바이트 슬라이스로 변환 가능 |
파생 타입
| 타입 | 예시 |
|---|---|
| 배열 | [5]int, 길이 5 의 정형 배열 |
| 슬라이스 | []float64, 64 비트 부동소수점 슬라이스 |
| 맵 | map[string]int, 키는 문자열 타입, 값은 정형인 맵 |
| 구조체 | type Gopher struct{}, Gopher 구조체 |
| 포인터 | *int, 정형 포인터. |
| 함수 | type f func(), 매개변수 없고 반환 값 없는 함수 타입 |
| 인터페이스 | type Gopher interface{}, Gopher 인터페이스 |
| 채널 | chan int, 정형 채널 |
영값
공식 문서에서 영값은 zero value 라고 하며, 영값은 단순히 숫자 0 을 의미하는 것이 아니라 타입의 빈 값 또는 기본값이라고 하는 것이 더 정확합니다.
| 타입 | 영값 |
|---|---|
| 숫자 타입 | 0 |
| 불리언 타입 | false |
| 문자열 타입 | "" |
| 배열 | 고정 길이의 해당 타입 영값 집합 |
| 구조체 | 내부 필드가 모두 영값인 구조체 |
| 슬라이스, 맵, 함수, 인터페이스, 채널, 포인터 | nil |
nil
nil은 다른 언어의 none 또는 null 과 유사하지만 동일하지는 않습니다. nil 은 일부 참조 타입의 영값일 뿐이며 어떤 타입에도 속하지 않습니다. 소스 코드에서 nil 은 단순히 변수임을 알 수 있습니다.
go
var nil Type또한 nil == nil 과 같은 문장은 컴파일을 통과할 수 없습니다.
