더북(TheBook)

3.2.1 정수

표 3-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) 타입으로 문자의 코드값을 저장하여 문자를 표기한다. byteuint8의 별칭으로 1바이트로 표현할 수 있는 아스키(ASCII) 문자를 표기할 수 있다. runeint32의 별칭으로 유니코드(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 가

 

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.