go接口实战

一 实战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 &{}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值