GO · 기초 문법
커스텀 타입 & 타입 별칭
type 키워드로 새로운 타입을 정의하여 타입 안전성을 높입니다. 타입 별칭과 타입 정의의 차이를 이해합니다.
기초 문법중급typealiascustom-typetype-safety
핵심 설명
type 키워드로 새로운 타입을 정의하여 타입 안전성을 높입니다. 타입 별칭과 타입 정의의 차이를 이해합니다.
Go code
package main
import "fmt"
// 타입 정의 — 새로운 타입 (기존 메서드 상속 안 됨)
type UserID int64
type Email string
// 타입 별칭 — 완전히 동일한 타입
type Byte = uint8
func sendEmail(to Email, msg string) {
fmt.Printf("To: %s, Msg: %s\n", to, msg)
}
func main() {
var id UserID = 100
var email Email = "user@go.dev"
// id + 1 → 컴파일 에러 (타입 불일치)
id = UserID(int64(id) + 1)
fmt.Println(id)
sendEmail(email, "Hello!")
// sendEmail("raw@go.dev", "Hi") // 컴파일 에러
sendEmail(Email("raw@go.dev"), "Hi") // 명시적 변환 필요
}학습 팁
커스텀 타입은 함수 시그니처에서 매개변수를 명확히 구분해줍니다. func Transfer(from, to UserID, amount Money)처럼 사용하면 인자 순서 실수를 방지합니다.
주의할 점
타입 정의(type X int)와 타입 별칭(type X = int)을 혼동하지 마세요. 타입 정의는 새 타입이고, 별칭은 기존 타입과 동일합니다.
자주 묻는 질문
커스텀 타입 & 타입 별칭란 무엇인가요?
type 키워드로 새로운 타입을 정의하여 타입 안전성을 높입니다. 타입 별칭과 타입 정의의 차이를 이해합니다.
커스텀 타입 & 타입 별칭 학습 시 주의할 점은 무엇인가요?
타입 정의( type X int )와 타입 별칭( type X = int )을 혼동하지 마세요. 타입 정의는 새 타입이고, 별칭은 기존 타입과 동일합니다.