Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Go Mencapai Polimorfisme tanpa Warisan?
Polimorfisme dalam Go lang
Seperti yang telah anda temui, Go tidak menyokong konsep polimorfisme berorientasikan objek tradisional melalui pewarisan. Walau bagaimanapun, terdapat cara lain untuk mencapai hasil yang serupa menggunakan antara muka dan komposisi.
Antara Muka dan Komposisi
Dalam Go, antara muka mentakrifkan kontrak yang menentukan kaedah yang mesti dilaksanakan oleh jenis . Komposisi membolehkan anda mencipta jenis baharu dengan membenamkan jenis lain. Dengan menggabungkan antara muka dan gubahan, anda boleh mencapai bentuk polimorfisme.
Sebagai contoh, pertimbangkan kod berikut:
<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 contoh ini:
Apabila anda menjalankan kod ini, anda akan melihat output berikut:
Hello, playground Print Foo Impl
Ini menunjukkan cara antara muka dan komposisi boleh digunakan untuk mencapai bentuk polimorfisme dalam Go. Dengan menentukan antara muka, anda boleh memastikan bahawa jenis yang berbeza berkongsi set kaedah yang sama. Dengan membenamkan jenis, anda boleh mencipta jenis baharu yang menggabungkan keupayaan berbilang jenis lain. Ini membolehkan anda menulis kod yang merawat jenis yang berbeza dengan cara yang seragam.
Atas ialah kandungan terperinci Bagaimanakah Go Mencapai Polimorfisme tanpa Warisan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!