PHpullh
학습 라이브러리/Go/iota와 열거형

GO · 기초 문법

iota와 열거형

iota로 연속된 상수를 자동 생성합니다. 비트 시프트와 결합하면 비트 플래그 패턴을 구현할 수 있습니다.

기초 문법중급iotaconstenumbitflag

핵심 설명

iota로 연속된 상수를 자동 생성합니다. 비트 시프트와 결합하면 비트 플래그 패턴을 구현할 수 있습니다.

Go code

package main

import "fmt"

type Weekday int

const (
	Sunday Weekday = iota // 0
	Monday                // 1
	Tuesday               // 2
	Wednesday             // 3
)

// 비트 플래그 패턴
type Permission int

const (
	Read    Permission = 1 << iota // 1
	Write                          // 2
	Execute                        // 4
)

func (p Permission) String() string {
	s := ""
	if p&Read != 0 { s += "r" }
	if p&Write != 0 { s += "w" }
	if p&Execute != 0 { s += "x" }
	return s
}

func main() {
	fmt.Println(Monday)  // 1
	perm := Read | Write
	fmt.Println(perm)    // rw
}

학습 팁

iotaconst 블록 내에서만 유효하며, 새 블록이 시작되면 0으로 리셋됩니다.

주의할 점

iota의 첫 번째 값이 0이므로, 유효하지 않은 상태를 0으로 정의하면 초기화되지 않은 변수와 구분할 수 없습니다.

자주 묻는 질문

iota와 열거형란 무엇인가요?

iota 로 연속된 상수를 자동 생성합니다. 비트 시프트와 결합하면 비트 플래그 패턴을 구현할 수 있습니다.

iota와 열거형 학습 시 주의할 점은 무엇인가요?

iota 의 첫 번째 값이 0이므로, 유효하지 않은 상태를 0으로 정의하면 초기화되지 않은 변수와 구분할 수 없습니다.