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!