接口(interface)的基本介绍特点及语法说明
 
 
 基本介绍 
   在学习多态前,需要先了解接口(interface),因为在 Golang 中 多态特性主要是通过接口来体现的。
为什么有接口
  
 usb插槽就是现实中的接口。你可以把手机,相机,u盘都插在usb插槽上,而不用担心那个插槽是专门插哪个的,原因是做usb插槽的厂家和做各种设备的厂家都遵守了统一的规定包括尺寸,排线等等。
这样的设计需求在 Golang 编程中也是会大量存在的。
 
 案例演示
 package main
import (
	"fmt"
)
//声明/定义一个接口
type Usb interface {
	//声明了两个没有实现的方法
	Start() 
	Stop()
}
//声明/定义一个接口
type Usb2 interface {
	//声明了两个没有实现的方法
	Start() 
	Stop()
	Test()
}
type Phone struct {
}  
//让Phone 实现 Usb接口的方法
func (p Phone) Start() {
	fmt.Println("手机开始工作。。。")
}
func (p Phone) Stop() {
	fmt.Println("手机停止工作。。。")
}
type Camera struct {
}
//让Camera 实现   Usb接口的方法
func (c Camera) Start() {
	fmt.Println("相机开始工作。。。")
}
func (c Camera) Stop() {
	fmt.Println("相机停止工作。。。")
}
//计算机
type Computer struct {
}
//编写一个方法Working 方法,接收一个Usb接口类型变量
//只要是实现了 Usb接口 (所谓实现Usb接口,就是指实现了 Usb接口声明所有方法)
func (c Computer) Working(usb Usb) {
	//通过usb接口变量来调用Start和Stop方法
	usb.Start()
	usb.Stop()
}
func main() {
	//测试
	//先创建结构体变量
	computer := Computer{}
	phone := Phone{}
	camera := Camera{}
	//关键点
	computer.Working(phone)
	computer.Working(camera) //
} 
 输出结果:
 
 
 
 接口概念的再说明 
   interface 类型可以定义一组方法,但是这些不需要实现。 interface 不能包含任何变量。到某个自定义类型(比如结构体 Phone)要使用的时候,在根据具体情况把这些方法写出来(实现)。
 type 接口名interface{
    method1(参数列表)返回值列表
    method2(参数列表)返回值列表
    ...
}
 
 实现接口
所有方法
 func(t自定义类型)method1(参数列表)返回值列表{
    //方法实现
}
func(t自定义类型)method1(参数列表)返回值列表{
    //方法实现
}
//... 
 
说明: 
   接口里的所有方法都没有方法体,即接口的方法都是没有实现的方法。接口体现了程序设计的多态和高内聚低偶合的思想。Golang 中的接口,不需要显式的实现。
只要一个变量,含有接口类型中的所有方法,那么这个变量就实现这个接口。因此,Golang 中没有 implement 这样的关键字