GO · 기초 문법
타입 임베딩
구조체에 다른 타입을 임베딩하여 필드와 메서드를 승격(promote)시킵니다. 상속 대신 합성을 사용하는 Go의 핵심 패턴입니다.
기초 문법중급embeddingcompositionpromotionstruct
핵심 설명
구조체에 다른 타입을 임베딩하여 필드와 메서드를 승격(promote)시킵니다. 상속 대신 합성을 사용하는 Go의 핵심 패턴입니다.
Go code
package main
import "fmt"
type Logger struct{}
func (l Logger) Log(msg string) {
fmt.Println("[LOG]", msg)
}
type Server struct {
Logger // 임베딩 (이름 없는 필드)
Host string
Port int
}
func (s Server) Start() {
s.Log(fmt.Sprintf("서버 시작: %s:%d", s.Host, s.Port))
}
func main() {
srv := Server{Host: "localhost", Port: 8080}
srv.Start()
srv.Log("직접 호출도 가능") // Logger.Log가 승격됨
}학습 팁
임베딩된 타입의 메서드는 외부 구조체에서 직접 호출할 수 있습니다. 인터페이스 충족에도 자동으로 포함됩니다.
주의할 점
임베딩은 상속이 아닙니다. 외부 구조체가 같은 이름의 메서드를 정의하면 임베딩된 메서드를 가립니다(shadowing).
자주 묻는 질문
타입 임베딩란 무엇인가요?
구조체에 다른 타입을 임베딩하여 필드와 메서드를 승격(promote)시킵니다. 상속 대신 합성을 사용하는 Go의 핵심 패턴입니다.
타입 임베딩 학습 시 주의할 점은 무엇인가요?
임베딩은 상속이 아닙니다. 외부 구조체가 같은 이름의 메서드를 정의하면 임베딩된 메서드를 가립니다(shadowing).
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.