Rumah >pembangunan bahagian belakang >Golang >Golang melaksanakan pewarisan

Golang melaksanakan pewarisan

WBOY
WBOYasal
2023-05-27 11:27:373926semak imbas

Golang ialah bahasa pengaturcaraan dengan kecekapan pembangunan yang sangat tinggi, yang dicirikan oleh sintaks ringkas, konkurensi berkuasa dan prestasi tinggi. Di Golang, tiada konsep kelas, sebaliknya struktur digunakan untuk mencipta objek. Walau bagaimanapun, pembangun selalunya perlu menggunakan pembolehubah atau kaedah sepanjang keseluruhan program, dan pada masa ini terdapat keperluan untuk warisan. Artikel ini akan memperkenalkan cara melaksanakan pewarisan di Golang.

1. Konsep pewarisan

Pewarisan ialah konsep dalam pengaturcaraan berorientasikan objek, yang merujuk kepada proses mencipta kelas baharu daripada kelas sedia ada. Kelas baharu mewarisi sifat dan kaedah kelas sedia ada dan boleh mengembangkan fungsinya atas dasar ini.

Kelebihan utama pewarisan ialah penggunaan semula kod. Jika fungsi kelas sangat serupa dengan kelas lain, maka bahagian yang sama boleh diekstrak dan kelas induk dibuat, dan kelas anak mewarisi kelas induk. Dengan cara ini, jumlah kod dalam kelas induk dan subkelas dikurangkan dengan banyak, dan ia juga menjadikan penyelenggaraan dan pengembangan kod lebih mudah.

2. Laksanakan pewarisan di Golang

Di Golang, tiada konsep kelas, tetapi struktur dan antara muka digunakan untuk melaksanakan pengaturcaraan berorientasikan objek. Tetapi dengan struktur bersarang dan menggunakan antara muka Go untuk mencapai polimorfisme, kita masih boleh mencapai kesan pewarisan.

2.1 Struktur bersarang

Struktur bersarang ialah cara untuk melaksanakan pewarisan di Golang. Kita boleh menyusun struktur dalam struktur lain, supaya struktur bersarang boleh mewarisi semua sifat dan kaedah struktur bersarang.

Sebagai contoh, kami mentakrifkan struktur haiwan:

type Animal struct {
    Name string
}

func (a *Animal) Eat() {
   fmt.Printf("%s is eating
", a.Name)
}

Kemudian kami mentakrifkan struktur anjing, yang menyarangkan struktur Haiwan:

type Dog struct {
    Animal
}

func (d *Dog) Bark() {
    fmt.Printf("%s is barking
", d.Name)
}

Ini Dalam contoh, struktur Anjing mewarisi struktur Haiwan dan juga mentakrifkan kaedah Bark(). Kini kita boleh mencipta contoh anjing dan menggunakan kaedah Eat() dan Bark():

func main() {
    myDog := Dog{Animal{"Buddy"}}
    myDog.Eat()  // 输出: Buddy is eating
    myDog.Bark() // 输出: Buddy is barking
}

2.2 Antara muka melaksanakan polimorfisme

Di Golang, antara muka melaksanakan polimorfisme dengan cara yang penting. Jika sesuatu jenis melaksanakan semua kaedah yang ditakrifkan dalam antara muka, maka contoh jenis itu boleh diberikan kepada pembolehubah jenis antara muka.

Sebagai contoh, kami mentakrifkan antara muka yang boleh mengeluarkan bunyi:

type Speaker interface {
    Speak()
}

Kemudian kami mentakrifkan struktur manusia dan struktur kucing, yang kedua-duanya melaksanakan kaedah Cakap dalam antara muka Pembesar Suara.

type Person struct {
    Name string
}

func (p *Person) Speak() {
    fmt.Printf("%s is speaking
", p.Name)
}

type Cat struct {
    Name string
}

func (c *Cat) Speak() {
    fmt.Printf("%s is meowing
", c.Name)
}

Kemudian kami mentakrifkan fungsi Speak() yang parameternya ialah jenis antara muka Speaker. Fungsi ini mengeluarkan ayat yang berbeza berdasarkan contoh Penceramah yang berbeza:

func Speak(s Speaker) {
    s.Speak()
}

Kini kita boleh mencipta tika Orang dan Kucing, dan kemudian memanggil fungsi Speak() untuk mengeluarkan suara mereka:

func main() {
    tom := Cat{"Tom"}
    bob := Person{"Bob"}
    Speak(&tom) // 输出:Tom is meowing
    Speak(&bob) // 输出:Bob is speaking
}

Dalam contoh ini, kami mentakrifkan antara muka Speaker dan semua struktur yang melaksanakan kaedah Speak() boleh diberikan kepada pembolehubah jenis Speaker. Jadi kita boleh mengeluarkan bunyi masing-masing melalui fungsi Speak() seperti di atas.

3. Ringkasan

Terdapat banyak cara untuk melaksanakan pewarisan dalam struktur Bersarang dan menggunakan antara muka untuk mencapai polimorfisme ialah dua cara biasa. Golang tidak mempunyai konsep kelas, tetapi menggunakan teknik yang sesuai, kita masih boleh mendapatkan kesan yang serupa dengan warisan dalam bahasa pengaturcaraan berorientasikan objek lain.

Warisan boleh meningkatkan kebolehgunaan semula kod dengan sangat baik, dan juga menjadikan organisasi dan penyelenggaraan program lebih mudah. Jika anda membangun di Golang dan memerlukan fungsi yang serupa dengan warisan, anda boleh mempertimbangkan untuk menggunakan kaedah di atas untuk mencapainya.

Atas ialah kandungan terperinci Golang melaksanakan pewarisan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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 sebelumnya:kaedah struct golangArtikel seterusnya:kaedah struct golang