Rumah > Artikel > pembangunan bahagian belakang > Cara Mencapai Polimorfisme dalam Go Without Inheritance: Contoh Praktikal
Memahami Polimorfisme dalam Go: Membongkar Salah Tanggapan Biasa
Walaupun polimorfisme ialah konsep asas dalam pengaturcaraan berorientasikan objek, ia mengambil bentuk yang berbeza dalam Pergi. Mari kita jelaskan perkara ini dengan menangani isu khusus yang berkaitan dengan pelaksanaan polimorfisme dalam kod anda.
Dalam Go, polimorfisme dicapai melalui antara muka, yang mentakrifkan satu set kaedah yang mesti dilaksanakan oleh sesuatu jenis. Daripada menggunakan warisan seperti dalam bahasa berorientasikan objek, Go menggunakan gubahan untuk mencipta jenis dengan gelagat dikongsi.
Dalam kod anda, anda cuba mencipta jenis "asas" BaseTX yang mengandungi medan biasa untuk jenis yang berbeza daripada urus niaga. Walau bagaimanapun, komposisi harus digunakan dan bukannya warisan, jadi kami akan mencipta struct Metadata yang menyimpan medan kongsi:
type Metadata struct { Field1 string Field2 string }
Jenis transaksi kami kemudiannya akan membenamkan Metadata:
type RewardTX struct { Metadata } type AllowanceTX struct { Metadata AddField string }
Untuk melaksanakan operasi biasa pada jenis transaksi ini, kami akan mentakrifkan kaedah logicAndSaveTX untuk Metadata yang mengendalikan logik yang dikongsi:
func (tx Metadata) logicAndSaveTX() { // Logic on Metadata fields tx.Field1 = "overwritten" tx.Field2 = "logic done" }
Dan kemudian tentukan kaedah logicAndSaveTX tersuai untuk RewardTX dan AllowanceTX yang memanjangkan tingkah laku biasa:
func (tx RewardTX) logicAndSaveTX() { // Call Metadata's logicAndSaveTX() tx.Metadata.logicAndSaveTX() // Additional logic unique to RewardTX } func (tx AllowanceTX) logicAndSaveTX() { // Call Metadata's logicAndSaveTX() tx.Metadata.logicAndSaveTX() // Additional logic unique to AllowanceTX tx.AddField = "more stuff" }
Dengan mengarang Metadata ke dalam jenis transaksi dan melaksanakan kaedah khusus untuk setiap jenis, kami mencapai gelagat yang diingini tanpa bergantung pada warisan atau kelas asas. Ini ialah "jalan Pergi yang betul" untuk mengendalikan polimorfisme melalui antara muka dan komposisi.
Atas ialah kandungan terperinci Cara Mencapai Polimorfisme dalam Go Without Inheritance: Contoh Praktikal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!