要将接口方法的返回类型定义为另一个接口,您可以在接口定义中使用接口嵌套。以下是一个示例:
package main
import "fmt"
// 定义一个接口
type MyInterface interface {
MyMethod() MySubInterface
}
// 定义一个子接口
type MySubInterface interface {
SubMethod() string
}
// 实现子接口
type MyStruct struct{}
func (m MyStruct) SubMethod() string {
return "Hello, World!"
}
// 实现主接口并返回子接口
type MyMainStruct struct{}
func (m MyMainStruct) MyMethod() MySubInterface {
return MyStruct{}
}
func main() {
var myInterface MyInterface
myInterface = MyMainStruct{}
result := myInterface.MyMethod()
fmt.Println(result.SubMethod())
}
在这个示例中,我们定义了两个接口:MyInterface
和 MySubInterface
。MyInterface
接口有一个 MyMethod()
方法,该方法返回 MySubInterface
类型。MySubInterface
接口有一个 SubMethod()
方法,该方法返回一个字符串。
我们还定义了两个结构体:MyStruct
和 MyMainStruct
。MyStruct
实现了 MySubInterface
接口,MyMainStruct
实现了 MyInterface
接口。MyMainStruct
的 MyMethod()
方法返回一个 MyStruct
结构体,该结构体实现了 MySubInterface
接口。
在 main()
函数中,我们创建了一个 MyMainStruct
结构体实例,并将其赋值给 MyInterface
类型的变量 myInterface
。然后,我们调用 myInterface.MyMethod()
方法,该方法返回一个实现了 MySubInterface
接口的结构体。最后,我们调用 result.SubMethod()
方法,该方法返回一个字符串 "Hello, World!"。
领取专属 10元无门槛券
手把手带您无忧上云