【Golang系列】-接口
2022-03-18
接口
接口 会定义一些通用规范,只设计规范,而不实现规范
go语言的接口是一种新类型定义,他把所有具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口
语法格式和方法非常相似
接口的语法格式
//定义接口
type interface_name interface{
method_name1[return_type]
method_name2[return_type]
method_name3[return_type]
...
}
//定义结构体
type struct_name struct{
}
//实现接口的方法
func (struct_name_variable struct_name)method_name1()[return_type]{
//方法实现
}
在接口定义中定义,若干个空方法,这些方法具有通用性
接口示例:
定义一个usb接口,有读read和write两个方法,再定义一个电脑和一个手机来实现这个接口
package main
import "fmt"
//USB接口
type USB interface {
read()
write()
}
//Computer结构体
type Computer struct {
}
//Mobile结构体
type Mobile struct {
}
//Computer实现USB的接口方法
func (c Computer) read() {
fmt.Println("computer read...")
}
func (c Computer) write() {
fmt.Println("computer write...")
}
//Mobile实现USB的接口方法
func (c Mobile) read() {
fmt.Println("moblie read...")
}
func (c Mobile) write() {
fmt.Println("moblie write...")
}
func main() {
c := Computer{}
m := Mobile{}
c.read()
c.write()
m.read()
m.write()
}
结果:
computer read...
computer write...
moblie read...
moblie write...
实现接口必须实现接口中的所有方法
定义个openclose接口,里面有两个方法open和close 定义一个door结构体,实现其中一个方法
package main
import "fmt"
//定义openclose接口
type Openclose interface {
open()
close()
}
//定义door结构体
type Door struct {
}
//door实现接口方法
func (d Door) open() {
fmt.Println("door open...")
}
func (d Door) close() {
fmt.Println("door close...")
}
//调用
func main() {
d := Door{}
d.open()
d.close()
}