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) }
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!") }
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() }
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.
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() }
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) }
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() }
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!