Rumah >pembangunan bahagian belakang >Golang >Mengapa Kaedah Antara Muka Tidak Boleh Mempunyai Parameter Jenis?
Generik dalam Go: Sekatan pada Parameter Kaedah Antara Muka
Dalam Go 1.18beta2, apabila mentakrifkan kaedah antara muka dengan parameter generik, anda mungkin menghadapi ralat "kaedah antara muka mesti tidak mempunyai parameter jenis." Artikel ini menjelaskan sekatan ini dan meneroka kemungkinan penyelesaian.
Mengapa Parameter Jenis Tidak Dibenarkan dalam Kaedah Antara Muka?
Sebab pengehadan ini berakar umbi dalam reka bentuk pertimbangan untuk parameter generik dan jenis. Antara muka mentakrifkan kontrak untuk satu set tandatangan dan gelagat kaedah, manakala kaedah generik menyediakan mekanisme untuk mengabstraksikan jenis. Membenarkan parameter jenis dalam kaedah antara muka akan memperkenalkan kerumitan dalam:
Mengatasi Sekatan
Walaupun parameter jenis tidak boleh digunakan secara langsung dalam kaedah antara muka, terdapat penyelesaian alternatif:
Alihkan Parameter Jenis ke Definisi Antara Muka:
Sebaliknya mengisytiharkan parameter jenis dalam kaedah antara muka, alihkannya ke definisi antara muka itu sendiri. Ini membolehkan antara muka mengkhusus berdasarkan parameter jenis tertentu:
type Reader[V Unmarshaler] interface { Read(bucket []byte, k ...[]byte) ([][]byte, error) ReadDoc(bucket []byte, factory func() (V, error), k ...[]byte) ([]V, error) }
Kesimpulan
Sekatan ke atas parameter jenis dalam kaedah antara muka adalah keputusan reka bentuk yang disengajakan untuk memastikan kejelasan, prestasi dan pelaksanaan antara muka yang konsisten dalam Go generik. Walaupun pada mulanya ia mungkin menimbulkan cabaran, penyelesaian alternatif yang disediakan di atas menawarkan cara praktikal untuk mengatasi had ini dan memanfaatkan kuasa generik dalam kod anda.
Atas ialah kandungan terperinci Mengapa Kaedah Antara Muka Tidak Boleh Mempunyai Parameter Jenis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!