美文网首页
Golang 实现接口

Golang 实现接口

作者: 阿福德 | 来源:发表于2018-12-29 10:17 被阅读0次

    Duck Typing

    golang的接口很有意思,与java的思路不一样,java中是申明是的,必须使用关键字implements。而golang中则用的是Duck-Like的模式,如果子类的行为与接口一致,则这个子类就实现了该接口。如果某个东西的行为和鸭子一样,那么我们就说这个是一个只鸭子。

    Java接口

    interface AInterface{
         void behavior();
    }
    class ConcreteClass implements AInterface {
         void behavior();
    }
    

    上面的例子就是Java的中实现接口, 必须使用implements 关键字。

    Golang 接口

    type Car interface {
        Drive()
    }
    
    type EVCard struct {
        color string
    }
    func (c *EVCard) Drive() {
        fmt.Println("EVCar Drive");
    }
    

    上面的代码是实现了接口, 可以看到EvCard 这个struct没有使用任何的关键字,只不过接口上有一个Driver()方法,结构体上也有这个Driver()名字一样的方法而已。

    实际举例

    package main
    
    import "fmt"
    
    type Car interface {
        Drive()
        Wash()
        GetColor()
    }
    
    type EVCard struct {
        color string
    }
    func (c *EVCard) Drive() {
        fmt.Println("EVCar Drive");
    }
    
    func (c *EVCard) Wash() {
        fmt.Println("Wash EvCar");
    }
    func (c *EVCard) GetColor() {
        fmt.Println(c.color);
    }
    
    type Person struct {
        car Car
    }
    
    func main()  {
        person := &Person{
            car:&EVCard{
                color:"White",
            },
        }
    
        person.car.Drive()
        person.car.Wash()
        person.car.GetColor()
    }
    

    上面的这个例子很好的演示了golang中的多态。

    欢迎大家一起交流。

    相关文章

      网友评论

          本文标题:Golang 实现接口

          本文链接:https://www.haomeiwen.com/subject/avhulqtx.html