임베디드 필드
. 연산자로 임베디드 필드의 내부 필드에 바로 접근할 수 있다. 하지만 임베디드 필드의 내부 필드와 이름이 같은 필드가 있을 때는 임베디드 필드의 타입을 함께 적어주어야 한다.
type Option struct { name string value string } type Item struct { name string price float64 quantity int Option // 임베디드 필드 } func main() { shoes := Item{"Sports Shoes", 30000, 2, Option{"color", "red"}} fmt.Println(shoes) // name 필드에 접근 fmt.Println(shoes.name) // 임베디드 필드인 Option 구조체의 내부 필드 value에 접근 fmt.Println(shoes.value) // 임베디드 필드인 Option 구조체의 내부 필드 name에 접근 // Item 구조체에 이름이 같은 필드가 있으므로 Option 타입을 명시 fmt.Println(shoes.Option.name) }
실행 결과
{Sports Shoes 30000 2 {color red}}
Sports Shoes
red
color
Item 구조체 내부에 Option 구조체를 임베디드 필드로 지정했고, main 함수에서 Item을 생성한 후 그 값을 출력했다. 임베디드 필드인 Option의 value를 출력할 때는 타입 이름을 명시하지 않고 바로 내부 필드의 이름으로 접근했다(shoes.value). 하지만 Option의 name을 출력할 때는 Item 구조체에 이름이 같은 필드가 있으므로 타입명 Option을 명시해주었다(shoes.Option.name).
