Go 中沒有傳統多態,但可以利用接口和反射實現類似效果:定義接口,明確方法集。建立多個類型,實現該介面。使用反射,動態呼叫方法,無需了解特定類型。
Go 中實作多態
如何實作?
Go 中沒有傳統意義上的多態,但可以使用介面和反射機制來實現類似多態的行為。
介面:
反射:
實作步驟:
範例:
<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{ &Square{side: 5}, &Circle{radius: 5}, } for _, s := range shapes { fmt.Println("Area:", reflect.ValueOf(s).MethodByName("Area").Call([]reflect.Value{})[0].Float()) } }</code>
優點:
缺點:
以上是golang如何實現多態性的詳細內容。更多資訊請關注PHP中文網其他相關文章!