接口没有继承的说法,只能实现XX接口,且需要实现接口中定义的所有方法才可以。
package main
import "fmt"
// 接口
type test interface {
Print()
Sleep()
}
type student struct {
Name string
Age int
}
func (p student) Print() {
fmt.Println(p.Name)
fmt.Println(p.Age)
}
func (p student) Sleep() {
fmt.Println("student is sleeping")
}
func main() {
var t test
var p student = student{
Name: "student1",
Age: 18,
}
t = p
t.Print()
t.Sleep()
}
上面定义了一个test接口,利用student结构体实现了接口中的Print和Sleep方法,所以该结构体就实现了test接口。
嵌套接口
package main
import "fmt"
// 嵌套接口
type reader interface {
reader()
}
type writer interface {
writer()
}
type file interface {
reader
writer
}
type ReaderandWriter struct {
}
func (p ReaderandWriter) reader() {
fmt.Println("reader")
}
func (p ReaderandWriter) writer() {
fmt.Println("writer")
}
func test(f file) {
f.reader()
f.writer()
}
func main() {
var a ReaderandWriter
test(a)
}
嵌套接口,如上面定义了reader、writer和file三个接口,且file中嵌套了reader和writer,若要实现file,就需要实现reader和writer接口中的方法。