Go에서 사용자 정의 타입 사용 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
Go 언어를 사용하는 개발자, 특히 사용자 정의 타입과 메서드 정의에 관심 있는 초보자 및 중급자
핵심 요약
- 사용자 정의 타입은
struct
또는 기본 타입(string
,int
,float64
등)을 기반으로 생성 가능 - 메서드 정의를 통해 타입별 기능 확장 가능 (
MyCustomInt.Positive()
예시) - 인터페이스 활용으로 다양한 타입(예:
DocumentRG
,DocumentCPF
)에 대한 일관된 처리 가능 - Enum 타입을 통해 문서 유형(
DocumentType
)을 명확하게 구분하고 타입별 로직 실행 가능
섹션별 세부 요약
1. 사용자 정의 타입 생성
struct
외에도string
,int
,slice
등 기본 타입을 기반으로 사용자 정의 타입 생성 가능- 예:
type MyCustomString string
,type MyCustomInt int
- 생성된 타입은 기본 타입과 동일한 연산(예:
+
,*
) 지원
2. 메서드 정의와 사용
- 사용자 정의 타입에 메서드 추가 가능:
func (my MyCustomInt) Positive() bool
- 메서드는 타입별로 고유한 로직 구현 가능 (예:
Document.Validate()
) - 메서드 호출 예:
person.Document.Validate()
3. 인터페이스를 통한 타입 확장
interface
정의로 다양한 타입(DocumentRG
,DocumentCPF
)의 공통 인터페이스(Validate()
) 구현Person
구조체의Document
필드는Document
인터페이스 타입 사용 가능- 타입별로
Validate()
메서드 구현 시 자동으로 인터페이스를 충족
4. Enum 타입으로 문서 유형 관리
DocumentType
이라는uint
기반 Enum 타입 정의iota
로 상수 정의:DocumentTypeRG
,DocumentTypeCPF
,DocumentTypeCNH
,DocumentTypePassaporte
String()
메서드를 통해 Enum 값의 문자열 표현 제공 (예:DocumentType.CPF
→"CPF"
)
결론
- 사용자 정의 타입과 메서드 정의를 통해 코드의 타입 안전성과 재사용성을 높일 수 있음
- 인터페이스와 Enum을 활용하면 복잡한 타입 관리 및 확장이 용이함
- 예:
DocumentType
Enum 사용으로 문서 유형을 명확히 구분하고, 각 유형별로Validate()
메서드를 구현해 로직 분리 가능