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 %s\n",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 %s\n",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)
}

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值