一、概念
1、 面向对象语言中,接口用于定义对象的行为。接口只指定对象应该做什么,实现这种行为的方法(实现细节)是由对象来决定。
2、 在Go语言中,接口是一组方法签名。

  • •接口只指定了类型应该具有的方法,类型决定了如何实现这些方法。
  • •当某个类型为接口中的所有方法提供了具体的实现细节时,这个类型就被称为实现了该接口。
  • •接口定义了一组方法,如果某个对象实现了该接口的所有方法,则此对象就实现了该接口。

3、 Go语言的类型都是隐式实现接口的。任何定义了接口中所有方法的类型都被称为隐式地实现了该接口。

 

二、接口的使用

go没有 implements, extends 关键字,其实这种编程语言叫做duck typing编程语言。

package main

import "fmt"
import "base"

//定义接口
type Phone interface {
    call()
}

type AndroidPhone struct {
}

type IPhone struct {
}

func (a AndroidPhone) call() {
    fmt.Println("我是安卓手机,可以打电话了")
}

func (i IPhone) call() {
    fmt.Println("我是苹果手机,可以打电话了")
}

func main() {
    //    定义接口类型的变量
    var phone Phone
    //phone = new(AndroidPhone)
    phone = AndroidPhone{}
    fmt.Printf("%T , %v , %p \n" , phone , phone , &phone)
    phone.call()

    //phone = new(IPhone)
    phone = IPhone{}
    fmt.Printf("%T , %v , %p \n" , phone , phone , &phone)
    phone.call()
}
View Code

相关文章: