Go에서 열거형 타입 구현 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
Go 언어를 사용하는 개발자, 열거형 타입을 구현해야 하는 중급 이상의 개발자
핵심 요약
- Go의 열거형 구현 방법은
const
와iota
를 활용한 커스텀 타입 정의로 가능하다. - 타입 안전성을 위해
type WeekDay int
과 같은 커스텀 타입 사용이 필수적이다. - 메서드 추가(
Name()
,String()
,ValueOf()
)를 통해 Java와 유사한 열거형 기능을 확장할 수 있다.
섹션별 세부 요약
1. 기본 열거형 구현
const
키워드로 상수 그룹 정의 가능.- 예시:
Sunday = 1
,Tuesday = 2
와 같이 수동으로 값 할당. - 단점: 타입 검증 없음, 안전성 부족.
2. 커스텀 타입으로 안전성 강화
type WeekDay int
을 정의하여 타입 제약 추가.const
상수에WeekDay
타입 할당으로 컴파일러가 타입 검증 수행.- 예시:
Sunday WeekDay = 1
과 같은 구조.
3. `iota`로 자동 증가 값 생성
iota
는 0부터 자동 증가하는 상수 생성자.- 예시:
Sunday WeekDay = iota
,Tuesday
등으로 순차적으로 값 할당. - 수동 할당 대신 효율적인 방법.
4. 메서드 추가로 기능 확장
Name()
메서드: 열거형 값의 이름을 반환.String()
메서드:fmt
패키지와 호환되는 문자열 출력.ValueOf()
메서드: 이름을 기반으로 열거형 값 검색.- 예시:
func (w WeekDay) String() string { return w.Name() }
5. 실무 적용 고려사항
- 열거형 값의 범위 검증(
if w < Sunday || w > Monday
) 필수. Values()
메서드로 모든 열거형 값 반환 가능.- Go의 유연한 타입 시스템을 활용한 안전한 구현 필요.
결론
Go에서는 const
와 iota
, 커스텀 타입을 활용해 열거형 기능을 구현할 수 있으며, 메서드 추가로 Java와 유사한 기능 확장 가능. 타입 안전성과 확장성을 고려한 설계가 핵심.