go-接口

一、接口:

接口中没有implement关键字,只要一个变量,含有接口中所有方法,那么这个变量就实现了这个接口,

//定义接口
type Usb interface {
    //声明方法
    Start()
    Stop()
}
type Phone struct {
}
//phone实现接口的方法
func (p Phone) Start() {
    fmt.Println("手机开始工作")
}
func (p Phone) Stop() {
    fmt.Println("手机停止工作")
}
type Camera struct {
}
func (c Camera) Start() {
    fmt.Println("相机开始工作。。")
}
func (c Camera) Stop() {
    fmt.Println("相机停止工作")
}
type Computer struct {
}
func (c Computer) Working(usb Usb) {
    usb.Start()
    usb.Stop()
}
func main()  {
    computer := Computer{}
    phone := Phone{}
    camera := Camera{}
    computer.Working(phone)
    computer.Working(camera)
}
运行结果:
手机开始工作
手机停止工作
相机开始工作。。
相机停止工作

二、

//定义接口
type AInterface interface {
    Say()
}
type Stu struct {
    Name string
}
func (stu Stu) Say() {
    fmt.Println("stu say()")
}
func main()  {
    var stu Stu
    var a AInterface = stu
    a.Say()
}
运行结果:
stu say()

1.接口本身不可以创建实例,但是可以指向一个实现了该接口的自定义类型的变量
2.接口中多有的方法都是没有实现的方法
3. 一个自定义类型将某个接口的方法都实现了,说这个自定义变量实现了该接口。
4.一个自定义类型可以实现多个接口

//定义接口
type AInterface interface {
    Say()
}
type BInterface interface {
    Hello()
}
type Stu struct {
}
func (stu Stu) Say() {
    fmt.Println("stu say()")
}
func (stu Stu) Hello() {
    fmt.Println("stu Hello()")
}
func main()  {
    var stu Stu
    var a AInterface = stu
    var b BInterface = stu
    a.Say()
    b.Hello()
}

5.接口中不能有任何变量

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!