Slide 17
Slide 17 text
Goへの批判(1-2)※悪いところではない
// Nameから処理を委譲された
type MyName struct {
*Name
}
// コンストラクタ
func NewMyName(name *Name) *MyName {
return &MyName{
Name: name,
}
}
type Name struct {
FirstName string
LastName string
}
func NewName(firstName string, lastName string) *Name {
return &Name{
FirstName: firstName,
LastName: lastName,
}
}
// フルネームを返却
func (name *Name) fullName() string {
return fmt.Sprintf("%s %s", name.FirstName,
name.LastName)
}
埋め込む側(委譲元) 埋め込まれる側(委譲先)