3.2.1 정수
표 3-1에 정수 타입과 표현할 수 있는 범위를 정리했다.
타입 |
크기 |
범위 |
int8 |
1바이트 |
-128~127 |
int16 |
2바이트 |
-32,768~32,767 |
int32 |
4바이트 |
-2,147,483,648~2,147,483,647 |
int64 |
8바이트 |
-9,223,372,036,854,775,808~9,223,372,036,854,775,807 |
int |
32비트 머신에서는 int32와 같음 64비트 머신에서는 int64와 같음 |
|
uint8 |
1바이트 |
0~255 |
uint16 |
2바이트 |
0~65,535 |
uint32 |
4바이트 |
0~4,294,967,295 |
uint64 |
8바이트 |
0~18,446,744,073,709,551,615 |
uint |
32비트 머신에서는 uint32와 같음 64비트 머신에서는 uint64와 같음 |
|
byte |
uint8의 별칭 |
|
rune |
int32의 별칭 |
|
uintptr |
uint와 같음 |
포인터를 저장할 때 사용 |
8진수와 16진수 표기
기본적으로 모든 정수는 10진수로 인식된다. 8진수는 숫자 앞에 0을 붙이고 16진수는 숫자 앞에 0x를 붙인다.
▼ 8진수와 16진수 사용
package main import "fmt" func main() { a := 365 // 10진수 b := 0555 // 8진수 c := 0x16D // 16진수 fmt.Println(a, b, c) }
실행 결과
365 365 365
문자 표기
Go는 정수 타입과 문자 타입을 구분하지 않는다. 바이트(byte) 또는 룬(rune) 타입으로 문자의 코드값을 저장하여 문자를 표기한다. byte는 uint8의 별칭으로 1바이트로 표현할 수 있는 아스키(ASCII) 문자를 표기할 수 있다. rune은 int32의 별칭으로 유니코드(UTF-8) 문자를 표기할 수 있다.
var ch1 byte = 65 // 65 (10진수) var ch2 byte = 0101 // 65 (8진수) var ch3 byte = 0x41 // 65 (16진수) var ch4 rune = 44032 // 44032 (10진수) var ch5 rune = 0126000 // 44032 (8진수) var ch6 rune = 0xAC00 // 44032 (16진수) fmt.Printf("%c %c %c\n", ch1, ch2, ch3) fmt.Printf("%c %c %c\n", ch4, ch5, ch6)
실행 결과
A A A
가 가 가
문자 코드값이 아니라 문자 자체를 저장할 때는 작은따옴표(')를 사용한다.
var ch1 byte = 'A' var ch2 rune = '가' fmt.Printf("%c %c \n", ch1, ch2)
실행 결과
A 가