Rumah > pembangunan bahagian belakang > Golang > Bolehkah Go Generics Menguatkuasakan Medan Khusus dalam Nilai Lulus Tanpa Kaedah Antara Muka?

Bolehkah Go Generics Menguatkuasakan Medan Khusus dalam Nilai Lulus Tanpa Kaedah Antara Muka?

Mary-Kate Olsen
Lepaskan: 2024-12-07 11:00:17
asal
405 orang telah melayarinya

Can Go Generics Enforce Specific Fields in Passed Values Without Interface Methods?

Memastikan Nilai Lulus Mempunyai Medan Khusus menggunakan Generik dalam Go

Masalah:
Pembangun sering memerlukan fungsi generik dalam Go yang menerima nilai dengan medan tertentu. Walaupun percubaan telah dibuat menggunakan pelbagai pendekatan, mencari penyelesaian yang boleh dilaksanakan adalah mencabar.

Soalan:
Bolehkah fungsi generik dilaksanakan dalam Go untuk menguatkuasakan kehadiran medan tertentu ( cth., medan "ID int") pada nilai yang diluluskan tanpa menggunakan kaedah antara muka (seperti "GetID() int")?

Jawapan:
Malangnya, jawapannya tidak.

Pelaksanaan generik Go untuk versi 1.18, jenis struktur tidak disokong. Oleh itu, kaedah dalam antara muka adalah perlu untuk mengakses medan biasa dalam nilai yang diluluskan.

Adalah penting untuk menjelaskan bahawa sintaks jenis tilde (~T) menandakan satu set jenis yang jenis asasnya adalah tepat T. Jadi "~struct{ ID int }" tidak termasuk struct dengan medan "ID int" dan medan tambahan.

Walaupun cadangan wujud untuk menangani had ini, ia tidak akan dilaksanakan dalam Go 1.18.

Atas ialah kandungan terperinci Bolehkah Go Generics Menguatkuasakan Medan Khusus dalam Nilai Lulus Tanpa Kaedah Antara Muka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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