【Golang学习】第九章 接口interface

目录

一、接口 

二、声明和实现

三、使用


一、接口 

      接口是一类规范,声明的是一组方法的集合。当一个类型为接口中的所有方法提供定义时,它被称为实现了该接口。

二、声明和实现

type Animal interface {
	Eat(e string)
	Run()
}

// Dog实现了Animal接口
type Dog struct {
	Name string
	Sex bool
}
func (d Dog)Eat(e string){
	fmt.Printf(d.Name + " can %v.\n", e)
}
func (d Dog)Run(){
	fmt.Println(d.Name + " can run.")
}

func main(){
	dog := Dog{
		Name: "Mumu",
		Sex:  true,
	}
	fmt.Println(dog, dog.Name)
	var a Animal
	a = dog
	a.Eat("eat")
	a.Run()
	// a.Name
    // Error: a.Name undefined (type Animal has no field or method Name)
}

/*
输出结果:
{Mumu true} Mumu
Mumu can eat.
Mumu can run.
*/

三、使用

// 空接口
func empty(i interface{}){
	fmt.Println(i)
}

func main(){
	empty("Entin")    	// string
	empty(7)			// int
	empty([]int{1, 2, 3})	// slice
}

/*
输出结果:
Entin
7
[1 2 3]
*/
type Animal interface {
	Eat()
	Run()
}

type Dog struct {
	Name string
	Sex bool
}
func (d Dog)Eat(){
	fmt.Println(d.Name + " can eat.")
}
func (d Dog)Run(){
	fmt.Println(d.Name + " can run.")
}

func MyFunc(a Animal){
	a.Run()
	a.Eat()
}

func main(){
	dog := Dog{
		Name: "Mumu",
		Sex:  true,
	}
	MyFunc(dog)    // 传入一个实现了Animal接口的结构体Dog
}

/*
输出结果:
Mumu can run.
Mumu can eat.
*/
type Animal interface {
	Eat()
	Run()
}

type Dog struct {
	Name string
	Sex bool
}
func (d Dog)Eat(){
	fmt.Println(d.Name + " can eat.")
}
func (d Dog)Run() {
	fmt.Println(d.Name + " can run.")
}

var A Animal

func MyFunc(a Animal){
	A = a    // 对接口进行挂载
}

func main(){
	d := Dog{
		Name: "Mumu",
		Sex:  true,
	}
	MyFunc(d)
	A.Run()    // A可以使用Run()
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值