Parameter Jenis dalam Kaedah Antara Muka: A Go Generics Quandary
Dalam usaha Go untuk mendapatkan generik, batu penghalang yang pelik muncul: larangan jenis parameter dalam definisi kaedah antara muka. Sekatan ini, yang dihadapi oleh pembangun yang cuba mengabstrakkan stor kunci/nilai, membuatkan kita tertanya-tanya mengapa dan jika penyelesaian wujud.
Rasional Di Sebalik Sekatan
The Go pasukan teras telah membuat keputusan reka bentuk yang disengajakan untuk tidak membenarkan parameter jenis dalam antara muka untuk beberapa sebab:
Mengelakkan Sekatan
Walaupun sekatan itu boleh mengecewakan, ia tidak boleh diatasi. Penyelesaian yang dicadangkan dalam cadangan Jenis parameter adalah untuk memindahkan parameter jenis ke dalam definisi jenis antara muka itu sendiri:
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 }
Pendekatan ini membolehkan antara muka generik selamat jenis sambil mengekalkan kekangan reka bentuk bahasa.
Atas ialah kandungan terperinci Bolehkah Go Generics Mengendalikan Parameter Jenis dalam Definisi Kaedah Antara Muka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!