接口的定义
Golang中每个接口由数个方法组成,接口的定义格式如下:
go
type 接口名 interface {
方法名1(参数列表) 返回值列表
方法名2(参数列表) 返回值列表
}
给结构体定义方法
type Phone struct {
Name string
}
// 给Phone结构体定义一个start方法
func (p Phone) start() {
fmt.Println(p.Name + " 开始")
}
必须要实现接口中的所有方法
如果一个结构体要实现一个接口,那么它必须实现接口中的所有方法。
package main
import (
"fmt"
)
// 定义一个接口Usber,包含start和stop两个方法,接口是一个规范
type Usber interface {
start()
stop()
}
type Phone struct {
Name string
}
// 给Phone结构体定义一个start方法
func (p Phone) start() {
fmt.Println(p.Name + " 开始")
}
// 给Phone结构体定义一个stop方法
func (p Phone) stop() {
fmt.Println(p.Name + " 关机")
}
func main() {
// 实现化一个Phone结构体,实现Usber接口
// 手机要实现usb接口的话必须得实现usb接口中的所有方法
// 你现在把它转成接口,转成接口就没有办法调用自定义方法了
var p1 = Usber(Phone{"小米14"})
p1.start()
p1.stop()
}
调用自定义方法
package main
import (
"fmt"
)
// 定义一个接口Usber,包含start和stop两个方法,接口是一个规范
type Usber interface {
start()
stop()
}
type Phone struct {
Name string
}
// 给Phone结构体定义一个start方法
func (p Phone) start() {
fmt.Println(p.Name + " 开始")
}
// 给Phone结构体定义一个stop方法
func (p Phone) stop() {
fmt.Println(p.Name + " 关机")
}
func (p Phone) custom() {
fmt.Println(p.Name + " 自定义方法")
}
func main() {
c := Phone{Name: "小米14"}
c.custom() // 调用自定义方法
var c1 Usber = c // 转换为接口类型
c1.start() // 调用接口中的方法
c1.stop() // 调用接口中的方法
}