// 封装
type Foo struct {
baz string
}
func (f *Foo) echo() { //f是接受者,可以直接在函数中使用f
fmt.Println(f.baz)
}
func main() {
f := Foo(baz: "hello,struct")
f.echo()
}
// 继承
type Foo struct {
baz string
}
type Bar struct {
Foo
}
func (f *Foo) echo {
fmt.Println(f.baz)
}
func main() {
b := Bar{Foo{baz: "hello,struct"}}
b.echo()
}
// 多态
type Foo interface {
qux()
}
type Bar struct {}
type Baz struct {}
func (b Bar) qux() {} //并没有声明 这就是非侵入式接口
func (b Baz) qux() {}
func main() {
var f Foo
f = Bar{}
f = Baz{}
fmt.Println(f)
}