저작권 안내
- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
열거형 사용하기
이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07
보통 상수는 연속되는 값을 가집니다. 예를 들어 요일을 상수로 표현하면 다음과 같습니다.
const Sunday = 0
const Monday = 1
const Tuesday = 2
const Wednesday = 3
const Thursday = 4
const Friday = 5
const Saturday = 6
const numberOfDays = 7
const
키워드와 ( )
를 사용하면 const 키워드를 반복하지 않아도 됩니다.
const (
Sunday = 0
Monday = 1
Tuesday = 2
Wednesday = 3
Thursday = 4
Friday = 5
Saturday = 6
numberOfDays = 7
)
상수에 값을 일일이 대입하지 않고, 순서대로 생성하려면 iota
를 사용하면 됩니다. 다음과 같이 첫 번째 상수인 Sunday에 iota를 대입하면 Sunday에 0, Monday에 1, Tuesday에 2와 같이 순서대로 값이 설정됩니다.
const (
Sunday = iota // 0
Monday // 1
Tuesday // 2
Wednesday // 3
Thursday // 4
Friday // 5
Saturday // 6
numberOfDays // 7
)
fmt.Println(Thursday) // 4
fmt.Println(numberOfDays) // 7
여기서 Sunday를 1부터 시작하고 싶다면 iota + 1을 대입하면 됩니다.
iota에 연산자와 특정 값을 조합하면 상수 값을 0, 1, 2, 3처럼 정수 순서대로 생성하지 않고 특정한 순서로 생성할 수 있습니다. iota는 항상 0부터 시작하지만 다음과 같이 시프트 연산자나 곱셈 연산자를 사용하면 됩니다.
const (
a = 1 << iota // a == 1 (1 << 0)
b = 1 << iota // b == 2 (1 << 1)
c = 1 << iota // c == 4 (1 << 2)
d = 1 << iota // d == 8 (1 << 3)
)
const (
a = iota * 30 // a == 0 (0 * 30)
b = iota * 30 // b == 30 (1 * 30)
c = iota * 30 // c == 60 (2 * 30)
d = iota * 30 // d == 90 (3 * 30)
)
상수에서 특정 iota 값을 생략하려면 _ (밑줄 문자)를 사용하면 됩니다. 다음은 iota 값을 0, 1, 3만 사용하고 2는 생략한 코드입니다.
const (
bit0, mask0 = 1 << iota, 1<<iota - 1 // bit0 == 1, mask0 == 0
bit1, mask1 // bit1 == 2, mask1 == 1
_, _ // iota == 2를 생략하여 bit2와 mask2 생략
bit3, mask3 // bit3 == 8, mask3 == 7
)
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.