golang接口interfance

一、基本介绍

interfance类型可以定义一组方法,但是这些不需要实现,并且interface不能包含任何变量,到某个自定义类型要使用时,在根据具体情况把这些方法写出来

二、基本语法

type 接口名 interfance{
	method1(参数列表)返回值列表
	method2(参数列表)返回值列表
}

例子:

package main

import (
	"fmt"
)

type Usb interface {
	Start()
	Stop()
}
type Phone struct {
}

// 让Phone实现Usb接口方法
func (phone Phone) Start() {
	fmt.Println("手机开始工作...")
}

func (phone Phone) Stop() {
	fmt.Println("手机停止工作...")
}

type Camera struct {
}

// 让Camera实现Usb接口方法
func (camera Camera) Start() {
	fmt.Println("相机开始工作...")
}

func (camera Camera) Stop() {
	fmt.Println("相机停止工作...")
}

type Computer struct {
}

// 编写一个方法Working方法,接收一个Usb接口类型变量
// 只要是实现了Usb接口,(所谓实现Usb接口,就是指实现了Usb接口声明所有方法)
func (computer Computer) Working(usb Usb) {
	// 通过usb接口变量来调用Start和Stop方法
	usb.Start()
	usb.Stop()
}

func main() {

	computer := Computer{}
	phone := Phone{}
	computer.Working(phone)
	camera := Camera{}
	computer.Working(camera)
}

输出结果:

手机开始工作...
手机停止工作...
相机开始工作...
相机停止工作...

三、说明

  1. 接口里的所有方法都没有方法体,即接口的方法都是没有实现方法,接口体现了程序设计的多态和高内聚低耦合的思想
  2. Golang中的接口,不需要显示实现,只要一个变量,含有接口类型中的所有方法,那么这个变量就实现了这个接口,因此Golang没有impement关键字
上一篇:camera 命令的总结


下一篇:Cinemachine插件学习笔记