扫一扫下方二维码,关注本站官方公众号
获取永久解锁本站全部文章的验证码
还能不定期领现金红包

Golang中的interface-Go语言中文社区

Golang中的interface


Golang中的接口,提供了类似于C++中多态的功能,比如接口提供了一个功能为 “跑步”,人类可以跑步,机器人也可以跑步。只要你定义的class,实现和接口中一样的函数名(参数必须是一样的),在具体实现你定义类中和接口一样的名称和参数的函数,就可以实现同一个跑步的功能,可以是人也可以是机器人。具体的功能实现主要在于你的class中的成员方法。

package main
import (
    "fmt"
    "os"
    "reflect"
)
type MRun interface {  //接口的定义
    MRun(from string,to string)
}
func TakeRide(from,to string,mrun MRun) { //接口的对应的公共函数
    switch v:= mrun.(type) {
    case *Human:
        fmt.Fprintf(os.Stdout," ----->Human %s<-----n",v)
    case *Robot:
        fmt.Fprintf(os.Stdout," ----->Robot %s<------n",v)
    default:
        fmt.Fprintf(os.Stdout," ----->Unkown %s<------n",v)
    }
    mrun.MRun(from,to)
}
type Human struct{ //class的定义,定义了一个人类
    name string
}
func (p *Human) MRun(from string,to string) { //与接口函数和参数一样的人类的方法
    fmt.Fprintf(os.Stdout,"I am %s(type = %s) ,run from %s to %sn",p.name,reflect.TypeOf(*p),from,to)
}
type Robot struct{
    name string
}
func (p *Robot) MRun(from string,to string){//与接口函数和参数一样的机器人的方法
    fmt.Fprintf(os.Stdout,"I am %s(type = %s) ,run fromom %s to %sn",p.name,reflect.TypeOf(*p),from ,to)
}
func main() {
    man := &Human{"joy"}
    rot := &Robot{"inner"}
    var from string = "shanghai"
    var to string = "beijing"
    TakeRide(from,to,man)
    TakeRide(from,to,rot)
}

运行结果:
这里写图片描述

版权声明1:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/innobase/article/details/51692941
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-06-14 11:19
  • 阅读 ( 659 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群