在Go语言中,接口是一种类型,它定义了一组方法的集合。接口的默认方法是指实现了接口的结构体可以自动获得的方法,而不需要显式地实现这些方法。从Go 1.8开始,接口可以包含默认方法。要定义一个接口的默认方法,请在方法声明前添加default
关键字。
以下是一个示例,展示了如何定义一个包含默认方法的接口:
package main
import "fmt"
// 定义一个名为Printer的接口,包含一个名为Print的默认方法
type Printer interface {
Print()
// 定义一个名为DefaultMessage的默认方法
DefaultMessage() string {
return "This is a default message."
}
}
// 定义一个名为MyPrinter的结构体,实现了Printer接口
type MyPrinter struct{}
// 实现Printer接口的Print方法
func (p MyPrinter) Print() {
fmt.Println("Printing using MyPrinter.")
}
func main() {
// 创建一个MyPrinter实例
myPrinter := MyPrinter{}
// 调用MyPrinter实例的Print方法
myPrinter.Print()
// 调用MyPrinter实例的DefaultMessage方法,由于MyPrinter没有实现该方法,将使用接口中的默认方法
fmt.Println(myPrinter.DefaultMessage())
}
在这个示例中,我们定义了一个名为Printer
的接口,其中包含一个名为Print
的默认方法和一个名为DefaultMessage
的默认方法。然后,我们定义了一个名为MyPrinter
的结构体,并实现了Printer
接口的Print
方法。在main
函数中,我们创建了一个MyPrinter
实例,并调用了它的Print
方法和DefaultMessage
方法。由于MyPrinter
没有实现DefaultMessage
方法,因此将使用接口中的默认方法。