golang如何实现多态

golang如何实现多态

Go 中实现多态

如何实现?

Go 中没有传统意义上的多态,但可以使用接口和反射机制来实现类似于多态的行为。

接口:

  • 接口是一个明确定义的方法集,而不管实现它的类型是什么。
  • 当一个类型实现了一个接口,它必须提供接口中定义的所有方法。
  • 接口可以用来表示对象的一组通用行为,而不管其底层实现。

反射:

  • 反射机制允许程序在运行时检查和修改类型和值。
  • 可以使用反射来动态调用方法和访问类型信息。

实现步骤:

  1. 创建一个定义了共同方法的接口。
  2. 创建多个类型,每个类型都实现该接口。
  3. 使用反射来动态调用这些方法,而无需了解具体的类型。

示例:

<code class="go">type Shape interface {
    Area() float64
}

type Square struct {
    side float64
}

func (s *Square) Area() float64 {
    return s.side * s.side
}

type Circle struct {
    radius float64
}

func (c *Circle) Area() float64 {
    return math.Pi * c.radius * c.radius
}

func main() {
    shapes := []Shape{
        &amp;Square{side: 5},
        &amp;Circle{radius: 5},
    }

    for _, s := range shapes {
        fmt.Println("Area:", reflect.ValueOf(s).MethodByName("Area").Call([]reflect.Value{})[0].Float())
    }
}

给TA打赏
共{{data.count}}人
人已打赏
后端开发

Golang 可用性评估:从技术角度解读其应用范围

2024-5-7 10:33:08

后端开发

php时间戳转换为日期格式

2024-5-7 10:39:35

【腾讯云】11.11云上盛惠!云服务器首年1.8折起,买1年送3个月!
11.11云上盛惠!海量产品·轻松上云!云服务器首年1.8折起,买1年送3个月!超值优惠,性能稳定,让您的云端之旅更加畅享。
查看更多相关信息>>
站长

(工作日 10:00 - 22:30 为您服务)

2026-02-20 01:08:40

您好,无论是售前、售后、意见建议……均可通过联系工单与我们取得联系。

猜你想问:

  • 购买的模板免费包安装吗?

  • 这个演示地址有吗?

  • 购买vip会员可以下载哪些模板?

您的留言我们已经收到,我们将会尽快跟您联系!
取消
立即选择任一渠道联系我们