接口的引入
接口的引入
【1】代码入门:
package main
import (
"fmt"
)
//接口的定义:定义规则、定义规划,定义某种能力:
type SayHello interface {
sayHello()
}
//接口的实现:定义一个结构体:
//中国人:
type Chinese struct {
}
//实现接口的方法--->具体的实现:
func (peroson Chinese) sayHello() {
fmt.Println("你好")
}
//接口的实现:定义一个结构体:
//美国人:
type American struct {
}
//实现接口的方法--->具体的实现:
func (peroson American) sayHello() {
fmt.Println("hi")
}
//定义以一个函数,用来各国人打招呼,
//这个函数的参数是一个接口类型
func greet(s SayHello) {
s.sayHello()
}
func main() {
//定义一个中国人
c:= Chinese{} //定义一个中国人
//定义一个美国人
a:= American{} //定义一个美国人
greet(c) //调用函数,传入中国人
greet(a) //调用函数,传入美国人
}
【2】总结:
(1)接口中可以定义一组方法,但不需要实现,不需要方法体。并且接口中不能包含任何变量。到某个自定义类型要使用的时候(实现
接口的时候),再根据具体情况把这些方法具体实现出来。
(2)实现接口要实现所有的方法才是实现。
(3)Golang中的接口,不需要显式的实现接口。Golang中没有implement关键字。
(Golang中实现接口是基于方法的,不是基于接口的)
例如:
A接口a,b方法
B接口a,b方法
C结构体实现了ab方法,那么C实现了A接口,也可以说实现了B接口(只要实现全部方法即可,和实际接口耦合性很低,比Java松散
得多)
(4)接口目的是为了定义规范,具体由别人来实现即可。

浙公网安备 33010602011771号