Rumah > pembangunan bahagian belakang > Golang > kaedah pewarisan golang

kaedah pewarisan golang

PHPz
Lepaskan: 2023-05-16 16:21:08
asal
1046 orang telah melayarinya

Golang, sebagai bahasa pengaturcaraan yang agak baharu, mempunyai ciri-ciri kesederhanaan, kecekapan, keselamatan, dsb., dan telah menjadi semakin popular di kalangan pembangun sejak beberapa tahun kebelakangan ini. Berbanding dengan banyak bahasa pengaturcaraan, Golang mempunyai ciri unik, iaitu, ia tidak menyokong warisan kelas tradisional, tetapi ia menyediakan cara baharu untuk mencapai "warisan" melalui struktur dan antara muka.

Dalam pengaturcaraan berorientasikan objek tradisional, pewarisan ialah teknologi yang sangat biasa digunakan semula dan pengembangan kod boleh dicapai melalui pewarisan, tetapi ia juga membawa beberapa masalah, seperti tahap gandingan yang tinggi dan rantaian pewarisan lebih kod sukar diselenggara dan sebagainya. Berbeza dengan ini, struktur dan antara muka yang disediakan di Golang boleh mencapai "warisan" yang lebih fleksibel dan dipisahkan.

Jadi di Golang, bagaimana untuk menggunakan struktur dan antara muka untuk melaksanakan warisan? Seterusnya, satu contoh akan digunakan untuk menunjukkan.

Di Golang, kita boleh melaksanakan pewarisan melalui struktur. Sebagai contoh, dalam contoh berikut, kami mentakrifkan struktur kelas induk Haiwan, yang mengandungi dua medan Nama dan Umur, dan kaedah Sebut untuk mencetak beberapa maklumat asas tentang Haiwan.

type Animal struct {
    Name string
    Age  int
}

func (a *Animal) Speak() {
    fmt.Printf("My name is %s, I'm %d years old.
", a.Name, a.Age)
}
Salin selepas log masuk

Seterusnya kita mentakrifkan struktur subkelas Anjing, yang mewarisi struktur kelas induk Haiwan melalui Benam:

type Dog struct {
    Animal
    Breed string
}

func (d *Dog) Bark() {
    fmt.Println("Bow-wow!")
}
Salin selepas log masuk

Di sini kita lulus dalam struktur subkelas Anjing Dengan membenamkan struktur kelas induk Haiwan, pewarisan ialah dicapai. Pada masa yang sama, kami juga boleh memanjangkan sifat dan kaedah kami sendiri dalam subkelas, seperti Baka dan Bark di atas.

Akhir sekali, mari kita lihat cara menggunakan struktur dan kaedah ini. Mula-mula, kami mencipta objek kelas induk dan objek subkelas:

func main() {
    dog := Dog{
        Animal: Animal{Name: "Tom", Age: 2},
        Breed:  "Labrador Retriever",
    }
    animal := &Animal{Name: "Jerry", Age: 3}

    dog.Speak()
    dog.Bark()

    animal.Speak()
}
Salin selepas log masuk

Melalui kod di atas, kami berjaya mencipta haiwan objek kelas induk dan anjing objek subkelas, dan memanggil kaedahnya Speak and Bark. Hasil keluaran pada masa ini adalah seperti berikut:

My name is Tom, I'm 2 years old.
Bow-wow!
My name is Jerry, I'm 3 years old.
Salin selepas log masuk

Seperti yang dapat dilihat daripada hasilnya, kami telah berjaya melaksanakan pewarisan melalui kaedah Benam struktur, dan juga menambah atribut dan kaedah subkelas.

Selain menggunakan struktur untuk pewarisan, Golang juga boleh melaksanakan pewarisan melalui antara muka. Tetapi tidak seperti kaedah pewarisan tradisional, Golang melaksanakan "warisan" melalui pelaksanaan antara muka.

Kami boleh mentakrifkan antara muka IAnimal, yang mengandungi takrif kaedah Speak:

type IAnimal interface {
    Speak()
}
Salin selepas log masuk

Seterusnya, kami mentakrifkan struktur jenis anjing Anjing dan melaksanakan antara muka IAnimal:

type Dog struct {
    Name  string
    Breed string
    Age   int
}

func (d *Dog) Speak() {
    fmt.Printf("My name is %s, I'm a %s, and I'm %d years old.
", d.Name, d.Breed, d.Age)
}
Salin selepas log masuk

Akhir sekali, mari kita lihat cara menggunakan antara muka untuk melaksanakan "warisan":

func main() {
    animal := &Dog{Name: "Tom", Breed: "Labrador Retriever", Age: 2}
    animal.Speak()
}
Salin selepas log masuk

Melalui kod di atas, kami berjaya menggunakan antara muka untuk melaksanakan "warisan" dan memanggil Dog yang melaksanakan antara muka IAnimal The Speak kaedah struktur mengeluarkan maklumat asas anjing.

Di Golang, melalui struktur dan antara muka, kita boleh mencapai "warisan" yang fleksibel, mudah dan dipisahkan tanpa perlu bergantung pada warisan kelas seperti bahasa berorientasikan objek tradisional. Pendekatan ini menjadikan Golang sangat sesuai untuk membina perkhidmatan berskala besar, cekap dan konkurensi tinggi.

Sudah tentu, walaupun kaedah struktur dan antara muka menyediakan kaedah pewarisan yang lebih fleksibel, ia juga memerlukan kita untuk memberi lebih perhatian kepada reka bentuk dan seni bina kod untuk mengelakkan kekeliruan yang berlebihan atau penggunaan yang tidak wajar.

Atas ialah kandungan terperinci kaedah pewarisan golang. 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