一 实战1
1 代码
package main
import "fmt"
type AInterface interface {
Test01()
Test02()
}
type BInterface interface {
Test01()
Test03()
}
type Stu struct {
}
func (Stu Stu) Test01() {
}
func (Stu Stu) Test02() {
}
func (Stu Stu) Test03() {
}
func main() {
stu := Stu{}
var a AInterface = stu
var b BInterface = stu
fmt.Println(a, b)
}
2 测试
{} {}
二 实战2
1 代码
type AInterface interface {
Test01()
Test02()
}
type BInterface interface {
Test01()
Test03()
}
type CInterface interface {
AInterface
BInterface
}
func main() {
}
2 测试
# chapter11/exercise
.\main.go:46:2: duplicate method Test01
3 分析
编译错误,因为 CInterface 有两个Test01(),编译器不能通过,报告重复定义。
三 实战3
1 代码
package main
import "fmt"
type Usb interface {
Say()
}
type Stu struct {
}
func (this *Stu) Say() {
fmt.Println("Say()")
}
func main() {
var stu Stu = Stu{}
// 错误! 会报 Stu 类型没有实现Usb接口
// var u Usb = stu
// 如果希望通过编译,修改如下
var u Usb = &stu
u.Say()
fmt.Println("here", u)
}
2 测试
Say()
here &{}