Rumah > pembangunan bahagian belakang > Golang > Bolehkah Go Generics Mengendalikan Parameter Jenis dalam Definisi Kaedah Antara Muka?

Bolehkah Go Generics Mengendalikan Parameter Jenis dalam Definisi Kaedah Antara Muka?

Barbara Streisand
Lepaskan: 2024-12-06 10:19:14
asal
930 orang telah melayarinya

Can Go Generics Handle Type Parameters in Interface Method Definitions?

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:

  1. Kekaburan Tafsiran: Parameter jenis dalam antara muka boleh membawa kepada pelbagai tafsiran kaedah, menjadikannya sukar untuk mewujudkan peraturan pelaksanaan yang konsisten.
  2. Prestasi Masa Kompilasi: Merentasi keseluruhan hierarki sistem jenis pada masa penyusunan untuk menyelesaikan parameter jenis boleh memberi kesan yang ketara prestasi.
  3. Refleksi Masa Jalan: Membenarkan parameter jenis dalam antara muka memerlukan refleksi masa jalan untuk menentukan parameter jenis sebenar, memperlahankan pelaksanaan.
  4. Konflik Pelaksanaan: Kaedah berparameter pada asasnya adalah fungsi bebas, yang boleh bercanggah dengan tanggapan pelaksanaan antara muka.

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
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan