Golang教程-Go接口
            
            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}