在物件導向程式設計中,多態性允許物件根據其類別表現出不同的行為。但在Go中,多態性的概念並不是傳統意義上的實現。讓我們深入探討一下這背後的原因,探討如何在 Go 中實現類似的功能。
Go 不是傳統的物件導向語言。它採用了不同的方法,使用:
與物件導向語言不同,Go 不支援方法重寫或虛擬方法。這使得 Go 能夠保持更高等級的類型安全。
為了在Go 中實現類似多態性的行為,我們可以採用以下技術:
範例:
package main
import "fmt"
// Common interface
type Foo interface {
printFoo()
}
// Derived type with unique implementation
type FooImpl struct{}
func (f FooImpl) printFoo() {
fmt.Println("Print Foo Impl")
}
// Derived type composed using the common interface
type Bar struct {
FooImpl
}
// Function returning the common interface
func getFoo() Foo {
return Bar{}
}
func main() {
fmt.Println("Hello, playground")
b := getFoo()
b.printFoo()
}
在此範例中,Foo 是公用接口,FooImpl 是具有自己實作的衍生型別,Bar 是使用 FooImpl 組成的衍生型別。 getFoo() 函數傳回 Foo 介面的實例,允許我們將不同的衍生類型視為一個介面類型。
這種方法透過使我們能夠將不同的派生類型作為實例處理,在 Go 中提供了一種多態性形式通用介面。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3