Go: interface

结构体的接口实现方法参数为指针类型时,会报编译错误

复制代码
package main

type USB interface {
    method()
}
type Vale struct {
}

func (vale *Vale) method() {  // 指针类型
    println("vale method")
}

func main() {
    var vale Vale = Vale{}
    // var usb USB = vale
    var usb USB = &vale // 实现方法为指针类型时, 把vale地址赋给接口类型变量
    usb.method()
}
复制代码

 

 

Extend VS Interface:

复制代码
package main

type Monkey struct {
    Name string
}

func (monkey *Monkey) climb() {
    println("monkey climb")
}

type Flyable interface {
    fly()
}
type Swimable interface {
    swim()
}
type LittleMonkey struct {
    Monkey
}

func (m *LittleMonkey) fly() {
    println(m.Name, "fly")
}
func (m *LittleMonkey) swim() {
    println(m.Name, "swim")
}

func main() {
    monkey := LittleMonkey{
        Monkey{
            Name: "vaginal",
        },
    }
    monkey.climb()
    var swim Swimable = &monkey
    swim.swim()
    var fly Flyable = &monkey
    fly.fly()
}
复制代码

 

posted @   ascertain  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-05-18 npm
2021-05-18 MySQL: Pagination
点击右上角即可分享
微信分享提示