Polimorfisme dalam Go lang: Pencapaian Melalui Antara Muka dan Komposisi
Polymorphism, konsep asas dalam pengaturcaraan berorientasikan objek, membolehkan objek berkelakuan berbeza berdasarkan kelas atau jenis mereka. Dalam Go, tidak seperti bahasa OO tradisional, polimorfisme dicapai melalui antara muka dan komposisi.
Masalah:
Percubaan untuk melaksanakan polimorfisme dalam Go menggunakan warisan struktur seperti kod berikut coretan akan mengakibatkan ralat:
<code class="go">type Foo struct { ... } type Bar struct { Foo ... } func getFoo() Foo { return Bar{...} }</code>
Penyelesaian:
Dalam Go, polimorfisme dicapai melalui antara muka dan komposisi. Antara muka mentakrifkan satu set kaedah yang mesti dilaksanakan oleh jenis, membenarkan jenis digunakan secara polimorfik di mana-mana antara muka dijangka.
Kod di bawah menunjukkan cara polimorfisme boleh dicapai dalam Go menggunakan antara muka dan komposisi:
<code class="go">package main import "fmt" type Foo interface { printFoo() } type FooImpl struct { } type Bar struct { FooImpl } type Bar2 struct { FooImpl } func (f FooImpl) printFoo() { fmt.Println("Print Foo Impl") } func getFoo() Foo { return Bar{} } func main() { fmt.Println("Hello, playground") b := getFoo() b.printFoo() }</code>
Dalam coretan kod ini:
Dengan menggunakan antara muka dan komposisi, Go menyediakan pendekatan yang fleksibel dan cekap untuk mencapai polimorfisme tanpa memerlukan warisan tradisional.
Atas ialah kandungan terperinci Bagaimana Polimorfisme Boleh Dicapai dalam Pergi Tanpa Warisan Tradisional?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!