接口到结构体的转换
Golang 中接口的转换是一种将实现了特定方法集的接口转化为具体类型的过程。这可以通过定义一个新的结构体,并实现该接口的所有方法来实现。以下是一个示例: ```go type Shape interface { Area() float64 Perimeter() float64 } type Rectangle struct { Width float64 Height float64 } func (r Rectangle) Area() float64 { return r.Width * r.Height } func (r Rectangle) Perimeter() float64 { return 2 * (r.Width + r.Height) } func main() { var shape Shape shape = &Rectangle{Width: 10, Height: 5} // 接口到结构体的转换 rect := shape.(*Rectangle) fmt.Println(rect.Area()) // 输出:50 fmt.Println(rect.Perimeter()) // 输出:30 } ``` 在上面的示例中,我们定义了一个 `Shape` 接口,并实现了它的两个方法 `Area` 和 `Perimeter`。然后,我们定义了一个 `Rectangle` 结构体,并实现了 `Shape` 接口的方法集。在 `main` 函数中,我们将 `Rectangle` 结构体赋值给 `Shape` 接口类型的变量 `shape`,然后通过 `shape.(*Rectangle)` 将接口转换为具体的结构体类型,并赋值给 `rect`。接口到结构体的转换非常有用,它可以使我们在需要操作特定类型的数据时更方便、更灵活。例如,我们可以定义一个通用的 `Shape` 接口,然后实现具体的形状结构体(如 `Rectangle`、`Circle` 等)。这样一来,我们可以使用一个统一的接口来管理不同形状的对象,并执行相应的操作。