Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menyelesaikan Ralat 'tidak dapat menyimpulkan V' Go Apabila Melaksanakan Antara Muka Generik?
Apabila cuba menyimpan dan memuatkan hasil daripada pelbagai jenis menggunakan antara muka generik dan pelaksanaannya, Go menghadapi isu yang menyimpulkan V jenis:
cannot infer V: infer type parameter from constraint implementation
Dalam Go 1.20 dan lebih awal, membuat kesimpulan jenis V daripada pelaksanaan kekangan generik ConfigStorage[K, V] adalah tidak mudah. Algoritma inferens jenis adalah terhad dalam keupayaannya untuk menyimpulkan hujah jenis daripada jenis konkrit yang melaksanakan kekangan.
Go 1.21 dan Di Atas:
Sejak Pergi 1.21, isu ini telah diselesaikan. Inferens jenis kini mempertimbangkan jenis yang digunakan dalam kaedah antara muka. Oleh itu, anda hanya boleh memanggil GetValue tanpa menyatakan kekangan jenis:
result, _ = GetValue(fileStorage, "key")
Go 1.20 dan Bawah:
Dalam versi lama Go, anda mesti menyatakan jenis secara eksplisit parameter untuk GetValue:
GetValue[string, string](fileStorage, "key") // First string for K, second for V
Nota keluaran Go menyerlahkan bahawa inferens jenis kini mempertimbangkan kaedah apabila memberikan nilai kepada antara muka. Ini membenarkan argumen jenis untuk parameter jenis dalam tandatangan kaedah disimpulkan daripada jenis parameter kaedah yang sepadan.
Sebelum Pergi 1.21, cadangan dicadangkan menggunakan inferens jenis argumen fungsi untuk menyimpulkan argumen jenis daripada argumen bukan jenis. Walau bagaimanapun, inferens jenis kekangan pada mulanya tidak disokong untuk menyimpulkan hujah jenis yang tidak diketahui daripada yang diketahui. Had ini membawa kepada ralat "tidak boleh membuat kesimpulan V" apabila membuat kesimpulan V daripada jenis yang melaksanakan kekangan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyelesaikan Ralat 'tidak dapat menyimpulkan V' Go Apabila Melaksanakan Antara Muka Generik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!