Antara Muka Generik Penunjuk
Dalam Go, mentakrifkan antara muka untuk pelaksanaan penuding boleh dilakukan melalui generik. Pertimbangkan senario berikut:
Masalah:
Penyelesaian Menggunakan Antara Muka Generik dengan Parameter Jenis:
Untuk mencapai ini, anda boleh mengisytiharkan antara muka A dengan parameter jenis, memastikan bahawa jenis pelaksana adalah penunjuk kepada jenisnya parameter:
type A[P any] interface { SomeMethod() *P }
Kemudian, ubah suai tandatangan Pengendali seperti berikut:
func Handler[P any, T A[P]](callback func(result T)) { result := new(P) callback(result) }
Penyelesaian Menggunakan Antara Muka Pembungkus:
Jika anda tidak boleh ubah suai takrifan A, anda boleh membungkusnya ke dalam antara muka anda sendiri MyA:
type MyA[P any] interface { A *P }
Kemudian, kemas kini tandatangan Pengendali untuk menggunakan antara muka MyA:
func Handler[P any, T MyA[P]](callback func(result T)) { result := new(P) callback(result) }
Atas ialah kandungan terperinci Bagaimanakah Generik dalam Go Boleh Mengendalikan Fungsi dengan Parameter Antara Muka Berasaskan Penunjuk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!