14. // User構造体の定義
type User struct {
age int
name string
}
// User型にmynameメソッドを実装する
func (this User) myname() string {
return this.name
}
var u1 User = User{47,"matuura"}
fmt.Println(u1.myname()) // matuura
15. // printerインターフェースの宣言
type printer interface {
myname() string
}
// printerインターフェースを受け取る関数
func Print( p printer ) {
fmt.Println(p.myname())
}
var u1 User = User{47,"matuura"}
// Print関数にUserを渡すことができる
Print(u1)
シグネチャに基づくポリモ
17. 「埋め込み」による拡張
type Employee struct {
User // Userを埋め込む(型のみの宣言)
no int
}
e := Employee{User : User{47,"matuura"}, no : 482 }
fmt.Println(e.myname()) // Userのメソッドを呼び出している
fmt.Println(e.no) // Employeeのデータメンバ