跳转至

18 golang 基础语法之接口

golang 接口

golang 提供了另外的一种数据类型 -- 接口, 它能够将共性的方法定义在一起, 任何其他类型之遥实现了这些方法, 就是实现了这个接口

接口可以将不同类型绑定到一组公共方法上, 从而实现多态和灵活的设计

golang 中的接口是隐式实现的, 如果一个类型, 实现了一个接口定义的所有的方法, 那么它就自动的实现了接口, 因此, 我们可以通过将接口座位参数来实现不同类型的调用, 从而实现多态

例子

/* 定义接口 */

type interface_name interface {
  method_name1 [return_type]
  method_name2 [return_type]
  method_name3 [return_type]
  method_name4 [return_type]
  ....
}

type struct_name struct {

}

/* 实现接口方法 */
func (struct_name_variable struct_name) method_name1() [return_type]{
  /* 方法实现 */
}
...

代码例子

package main

import (
    "fmt"
)

type Phone interface {
  call()
}

type NokiaPhone struct {

}

func (nokiaPhone NokiaPhone) call() {
  fmt.Println("I am Nokia, I can call you!")
}

type IPhone struct() {

} 

func (iPhone IPhone) call() {
  fmt.Println("I am iPhone, I can call you!")
}

func main() {
  var phone Phone
  phone = new(NokiaPhone)
  phone.call()

  phone = new(IPhone)
  phone.call()
}