🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
> # 方法工厂 * 简单工厂:有一个方法去集中实例化对象 * 方法工厂:每一个对象都有一个实例化 * [https://blog.csdn.net/weixin\_45462577/article/details/114542194](https://blog.csdn.net/weixin_45462577/article/details/114542194) ~~~ package main import ( "fmt" ) // Shape 是一个几何形状的接口 type Shape interface { Area() float64 } // Circle 是一个圆形对象 type Circle struct { Radius float64 } // Square 是一个正方形对象 type Square struct { SideLength float64 } // Circle 的工厂函数 func NewCircle(radius float64) *Circle { return &Circle{Radius: radius} } // Square 的工厂函数 func NewSquare(sideLength float64) *Square { return &Square{SideLength: sideLength} } // 实现 Shape 接口的 Area 方法 func (c *Circle) Area() float64 { return 3.14159265359 * c.Radius * c.Radius } // 实现 Shape 接口的 Area 方法 func (s *Square) Area() float64 { return s.SideLength * s.SideLength } func main() { circle := NewCircle(5.0) square := NewSquare(4.0) shapes := []Shape{circle, square} for _, shape := range shapes { fmt.Printf("面积为 %.2f\n", shape.Area()) } } ~~~