더북(TheBook)

2.2.4 열거형

열거형(enumeration)은 차례로 1씩 증가하는 상수의 묶음이다.

Go는 다른 언어에서 기본으로 사용하는 개념을 사용하지 않는 경우가 많다. 열거형도 그중 하나다. Go에서는 상수와 열거형에 차이를 두지 않는다. 열거형과 정수 타입이 서로 호환되게 하는 언어가 많은데, Go는 열거형을 따로 만들지 않고 정수의 그룹을 상수로 선언해서 열거형을 표현한다.

const (
    Sunday = 0
    Monday = 1
    Tuesday = 2
    Thursday = 3
    Friday = 4
    Saturday = 5
)

상수를 열거형으로 선언할 때 iota 예약어를 사용하면 편리하다. 상수를 그룹으로 묶어서 선언할 때 const 그룹에서 iota의 값은 0이고, 이후로는 1씩 증가한다. iota로 위 코드를 다음과 같이 다시 정의했다.

const (
    Sunday = iota
    Monday
    Tuesday
    Thursday
    Friday
    Saturday
)

iota로 1씩 증가하는 값은 새로운 const 그룹을 만나면 0으로 초기화된다.

const (
    Sunday = iota // 0
    Monday        // 1
    Tuesday       // 2
    Thursday      // 3
    Friday        // 4
    Saturday      // 5
)
 
type Color int
 
const (
    RED Color = iota // 0
    ORANGE           // 1
    YELLOW           // 2
    GREEN            // 3
)

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