42_接口之间的转换

//超集可以使用子集里面的方法,而子集不能调用超集里面的方法

//超集接口变量可以转换为子集接口类型,但是子集接口类型不可以转换为超集接口类型

代码如下:

package main

import "fmt"

type Hummaner interface {
	sing() //声明一个方法,并没有实现
}
type Studenter interface {
	Hummaner //匿名字段,嵌入字段
	play()   //声明一个方法,并没有实现
}
type Student struct {
	id   int
	name string
}

//type Techer struct {
//	id   int
//	name string
//}

func (s *Student) sing() {
	fmt.Println("学生在唱歌!!!")
}
func (t *Student) play() {
	fmt.Println("老师在玩耍!!!")
}
func main() {
	//studenter是超集,hummer是子集
	var s Studenter = &Student{1, "steven"} //指针接收
	var h Hummaner = s                      //超集可以转子集
	h.sing()
	var h1 Hummaner = &Student{1, "steven"}
	//var s1 Studenter = h1// cannot use h1 (type Hummaner) as type Studenter in assignment
	//s1.sing()
}
每天的价值就是不停息的前进!!!
原文地址:https://www.cnblogs.com/zhaopp/p/11565515.html