Go 언어

본문 바로가기
사이트 내 전체검색


Go 언어
Go 언어

7. 열거형 사용하기

페이지 정보

작성자 관리자 댓글 0건 조회 2,334회 작성일 19-03-09 21:42

본문

7. 열거형 사용하기

요일과 같은 연속되는 값을 가지는 상수를 선언할 때는 다음과 같이 한다.



package main

import "fmt"

func main() {

 const Sunday = 0
 const Monday = 1
 const Tuesday = 2
 const Wednesday = 3
 const Thursday = 4
 const Friday = 5
 const Saturday = 6
 const numberOfDays = 7

 fmt.Println(Sunday)

} 


const 키워드와 ()를 사용하면 const 키워드를 반복하지 않아도 된다.


package main

import "fmt"

func main() {

 const (

  Sunday       = 0
  Monday       = 1
  Tuesday      = 2
  Wednesday    = 3
  Thursday     = 4
  Friday       = 5
  Saturday     = 6
  numberOfDays = 7

 )

 fmt.Println(Sunday)

} 



상수에 값을 일일이 대입하지 않고, 순서대로 생성하려면 iota 를 사용하면 된다.


package main

import "fmt"

func main() {

 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을 대입하면 된다.


시프트 연산자나 곱셈 연산자를 사용하면 특정한 순서로 생성할 수 있다.


package main

import "fmt"

func main() {

 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)

 )

 fmt.Println(a, b, c, d)

}



package main

import "fmt"

func main() {

 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)

 )

 fmt.Println(a, b, c, d)

}
 


package main

import "fmt"

func main() {

 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

 )

 fmt.Println(bit0)

}
 

댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.