go语言学习--day4interface

package main

import(
	"fmt"
)

//接口是一种类型,规定了该类型有哪些方法
//可以使用接口实现多态
//例1
/*
type cat struct{}
func (c cat) speak()  {
	fmt.Println("喵喵喵~")
}

type dog struct{}
func (d dog) speak()  {
	fmt.Println("汪汪汪~")
}

type pig struct{}
func (p pig) speak()  {
	fmt.Println("哼哼哼~")
}
func (p pig) eat()  {
	fmt.Println("猪饲料好吃~")
}

type animal interface {
	speak()
	//eat()
}

func AnimalSpeak(s animal)  {
	s.speak()
	//s.eat()
}*/

//例2
//接口的嵌套
type eater interface{
	eat()
}
type speaker interface{
	speak()
}
type animals interface{
	eater
	speaker
}

type cat struct{}
type dog struct{}

func (c cat) eat()  {
	fmt.Println("鱼好吃")
}
func (c cat) speak()  {
	fmt.Println("喵喵喵")
}


func (d dog) eat()  {
	fmt.Println("骨头好吃")
}


func main()  {
	fmt.Println("interface study:")
	//var my_pig pig
	//AnimalSpeak(my_pig)

	//var my_cat cat
	//AnimalSpeak(my_cat) //接口中的所有方法在具体类中都需要有定义,但是具体类中的方法数目可以大于接口中的方法数目
	
	//接口定义
	/*
	type 接口名 interface{
		方法名(参数列表)(返回值列表)
		方法名(参数列表)(返回值列表)
		...
	}*/

	//面向接口编程
	//使用值接受者时,接口变量赋值为值和指针均可。使用指针接受者时,只能用指针赋值。

	//接口可以嵌套接口
		var c1 cat

		var eater1 eater
		eater1 = c1
		eater1.eat()

		var animal1 animals
		animal1 = c1
		animal1.eat()
		animal1.speak()

	//空接口
	var nif interface{}
	nif = 10
	fmt.Println(nif)
	//接口变量的类型可以通过接口断言判断(就是判断是什么类型,然后进行类型转换)
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XiZhi_BUAA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值