Bagaimana Polimorfisme Boleh Dicapai dalam Pergi Tanpa Warisan Tradisional?

Barbara Streisand
Lepaskan: 2024-11-06 17:36:02
asal
914 orang telah melayarinya

How Can Polymorphism be Achieved in Go Without Traditional Inheritance?

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

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

Dalam coretan kod ini:

  • Foo ialah antara muka yang mentakrifkan kaedah printFoo.
  • FooImpl ialah pelaksanaan konkrit antara muka Foo.
  • Bar dan Bar2 ialah struktur yang membenamkan jenis FooImpl dan melaksanakan antara muka Foo secara tidak langsung.
  • getFoo() mengembalikan tika Bar sebagai jenis Foo, menunjukkan polimorfisme.

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!

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
Artikel terbaru oleh pengarang
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!