package main
import (
"fmt"
)
// 定义一个接口
type Shape interface {
Area() float64
}
// 定义一个矩形结构
type Rectangle struct {
Width float64
Height float64
}
// 实现接口的方法,使用指针接收者
func (r *Rectangle) Area() float64 {
return r.Width * r.Height
}
func main() {
// 创建一个矩形实例
rect := &Rectangle{Width: 3, Height: 4}
// 使用接口调用方法
var s Shape
s = rect
fmt.Println("矩形的面积为", s.Area())
}
在这个例子中,我们定义了一个接口 Shape
,它有一个 Area()
方法。然后我们定义了一个矩形结构体 Rectangle
,并在指针接收者上实现了 Area()
方法。在 main
函数中,我们创建了一个 Rectangle
类型的指针,并将其赋值给 Shape
类型的变量。因为Area()
方法使用了指针接收者, 我们必须将矩形实例转换为指针类型并将其分配给接口变量。现在,我们可以通过接口变量调用 Area()
方法,该方法调用的是矩形结构体上的方法。