本节就用这一个例子来说明扩展与复用
测试实例 1
package extension
import (
"fmt"
"testing"
)
type Pet struct {
}
func (p *Pet) Speak() {
fmt.Print("...")
}
func (p *Pet) SpeakTo(host string) {
p.Speak()
fmt.Print(" ", host)
}
// 内嵌的结构类型
type Dog struct {
Pet
}
func (d *Dog) Speak() {
fmt.Println("wang!")
}
func TestDog(t *testing.T) {
dog := new(Dog)
// 从输出可以看出,内嵌的结构类型,无法当做继承来用
// 不支持重载,不支持 LSP
dog.SpeakTo("Chao") // ... Chao
}