Go中interface嵌入和interface转换

匿名 (未验证) 提交于 2019-12-02 22:56:40
// code_22_interface_field_interface project main.go package main  import (     "fmt" )  type Humaner interface {     SayHi() }  type Personer interface {     Humaner     Sing(lyrics string) //lyrics 歌词 }  type Student struct {     name  string     score float64 }  func (s *Student) SayHi() {     fmt.Printf("Student[%s, %f]say hi!\n", s.name, s.score) }  func (s *Student) Sing(lyrics string) {     fmt.Printf("Student sing[%s]!!\n", lyrics) }  func main() {     s := &Student{"ck_god", 88.88}      var i2 Personer     i2 = s //接口指向struct对象     i2.SayHi()     i2.Sing("god is a girl")      //var i3 Humaner = &Student{"ck_god", 88.88}     //var i4 Personer = i1 //err     //Personer为超集,Humaner为子集     var i5 Personer = &Student{"ck_god", 88.88}     var i6 Humaner = i5     i6.SayHi()  }  //总结:通过赋值或者参数传递的形式,完成接口的调用。 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!