PHpullh
학습 라이브러리/Go/커스텀 타입 & 타입 별칭

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 )을 혼동하지 마세요. 타입 정의는 새 타입이고, 별칭은 기존 타입과 동일합니다.

Continue Learning

Go 학습을 이어가세요

총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.