Go接口

Go使用不同的方法来实现面向对象的概念。Go没有类和继承的概念。Go通过强大的接口来满足这些要求。

接口为对象提供行为:如果某个对象能够做到这一点,那么它可以在这里使用。

接口定义了一组抽象方法,并不包含任何变量。

语法:

type Namer interface {  
             Method1(param_list) return_type  
             Method2(param_list) return_type  
             ...  
}  

其中Namer是一个接口类型。

通常,接口的名称由方法名加上[e]r后缀组成,例如Printer、Reader、Writer、Logger、Converter等。

  • 一个类型不需要显式地声明它实现了一个接口:接口的满足是隐式的。多个类型可以实现相同的接口。
  • 实现接口的类型也可以拥有其他函数。
  • 一个类型可以实现多个接口。
  • 接口类型可以包含对实现了接口的任何类型实例的引用。

Go接口示例

package main  
import (  
   "fmt"  
)  
type vehicle interface {  
   accelerate()  
}  
func foo(v vehicle)  {  
   fmt.Println(v)  
     
}  
type car struct {  
   model string  
   color string  
}  
func (c car) accelerate()  {  
   fmt.Println("Accelrating?")  
     
}  
type toyota struct {  
  model string  
   color string  
   speed int  
}  
func (t toyota) accelerate(){  
   fmt.Println("I am toyota, I accelerate fast?")  
}  
func main() {  
   c1 := car{"suzuki","blue"}  
   t1:= toyota{"Toyota","Red", 100}  
   c1.accelerate()  
   t1.accelerate()  
   foo(c1)  
   foo(t1)  
}  

输出:

Accelrating...
I am toyota, I accelerate fast...
{suzuki blue}
{Toyota Red 100}

标签: Golang, Golang下载, Golang教程, Golang技术, Golang学习, Golang学习教程, Golang语言, Golang开发, Golang入门教程, Golang进阶教程, Golang高级教程, Golang面试题, Golang笔试题, Golang编程思想