Bagaimanakah Go Mencapai Polimorfisme tanpa Warisan?

DDD
Lepaskan: 2024-11-06 06:45:02
asal
183 orang telah melayarinya

How does Go Achieve Polymorphism without Inheritance?

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>
Salin selepas log masuk

Dalam contoh ini:

  • Antara muka Foo mentakrifkan kaedah printFoo.
  • FooImpl melaksanakan antara muka Foo dengan kaedah printFoo.
  • Bar membenamkan FooImpl dan oleh itu melaksanakan antara muka Foo.
  • Bar2 membenamkan FooImpl dan juga melaksanakan antara muka Foo.
  • getFoo mengembalikan nilai jenis Foo. Memandangkan Bar dan Bar2 melaksanakan antara muka Foo, Bar2 ialah nilai pulangan yang sah untuk getFoo.
  • panggilan utama getFoo untuk mendapatkan nilai Foo dan kemudian memanggil kaedah printFoo pada nilai tersebut.

Apabila anda menjalankan kod ini, anda akan melihat output berikut:

Hello, playground
Print Foo Impl
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!