Rumah >pembangunan bahagian belakang >Golang >Mengapa Kaedah Antara Muka Generik Tidak Boleh Mempunyai Parameter Jenis?
Parameterisasi Kaedah Antara Muka dalam Go Generik
Semasa meneroka Go generik dalam versi 1.18beta2, pembangun mungkin menghadapi ralat "kaedah antara muka mesti tiada jenis parameter" apabila cuba menentukan antara muka dengan kaedah menerima parameter jenis. Ralat ini berpunca daripada keputusan reka bentuk untuk melarang parameter jenis dalam definisi kaedah antara muka.
Sebab di sebalik sekatan ini terletak pada potensi kekaburan dan implikasi prestasi. Parameter jenis dalam kaedah antara muka boleh membawa kepada ketidakpastian tentang sama ada identiti hujah dikekalkan, keperluan untuk traversal pokok masa kompilasi yang menyeluruh atau potensi untuk refleksi memberi kesan prestasi pada masa jalan.
Selain itu, kaedah berparameter tidak boleh secara langsung melaksanakan antara muka, yang boleh menimbulkan kekeliruan.
Walau bagaimanapun, terdapat penyelesaian yang membolehkan penggunaan parameter jenis dalam antara muka: alihkan parameter jenis ke definisi jenis antara muka itu sendiri. Pendekatan ini mengekalkan kefungsian yang diingini sambil mematuhi had reka bentuk Go generik.
Contohnya:
type Reader[V Unmarshaler] interface { Read(bucket []byte, k ...[]byte) ([][]byte, error) ReadDoc(bucket []byte, factory func() (V, error), k ...[]byte) ([]V, error) } type Unmarshaler interface { UnmarshalKV(v []byte) error }
Atas ialah kandungan terperinci Mengapa Kaedah Antara Muka Generik Tidak Boleh Mempunyai Parameter Jenis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!