Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Antara Muka dan Penunjuk Mendayakan Gelagat Polimorfik dalam Go?
Polymorphism in Go - Memahami Antara Muka dan Penggunaan Penunjuk
Polymorphism, keupayaan objek untuk mengambil tingkah laku yang berbeza berdasarkan jenisnya, adalah konsep asas dalam pengaturcaraan. Walaupun Go tidak menyokong polimorfisme secara eksplisit dengan cara yang sama seperti bahasa berorientasikan objek, ia menawarkan mekanisme yang boleh mencapai kesan yang serupa.
Pertimbangkan contoh mudah di mana anda ingin mencipta antara muka dengan kaedah pengambil dan penetap. Walau bagaimanapun, anda menghadapi masalah di mana kaedah penetap tidak dibenarkan. Ini kerana jenis penerima dalam fungsi Go (kaedah) mesti sepadan dengan jenis konkrit.
Untuk menangani had ini, Go memperkenalkan penunjuk, dilambangkan dengan asterisk (*). Penunjuk kepada jenis menyimpan alamat memori bagi nilai sebenar, membolehkan anda memanipulasi nilai tersebut secara tidak langsung.
Dalam kod anda, isu dengan kaedah penetap ialah MyStruct ini bukan penunjuk. Ini bermakna sebarang perubahan yang dibuat dalam kaedah hilang sebaik sahaja fungsi keluar.
Versi kod anda yang diperbetulkan, seperti yang disediakan dalam jawapan, menggunakan penerima penuding untuk kaedah Set:
func (this *MyStruct) Set(i int) { this.data = i }
Dengan menggunakan penunjuk, kaedah Set kini boleh mengubah suai contoh MyStruct sebenar yang dirujuk oleh antara muka.
Sementara teknik ini bukan sahaja polimorfisme, ia menunjukkan penggunaan antara muka dan penunjuk untuk mencapai hasil yang serupa. Dalam Go, antara muka mentakrifkan kontrak yang memastikan kehadiran kaedah tertentu dalam sesuatu jenis, manakala penunjuk membolehkan manipulasi nilai secara tidak langsung, membenarkan tingkah laku yang lebih fleksibel dan dinamik.
Oleh itu, jawapannya menggambarkan dengan berkesan cara antara muka dan penunjuk boleh digabungkan untuk mencapai bentuk polimorfisme dalam Go, membolehkan anda mencipta kod yang padu dan boleh diselenggara yang menyesuaikan diri dengan jenis objek yang berbeza.
Atas ialah kandungan terperinci Bagaimanakah Antara Muka dan Penunjuk Mendayakan Gelagat Polimorfik dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!