Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menyelesaikan Ralat 'tidak dapat menyimpulkan V' Go Apabila Melaksanakan Antara Muka Generik?

Bagaimanakah Saya Boleh Menyelesaikan Ralat 'tidak dapat menyimpulkan V' Go Apabila Melaksanakan Antara Muka Generik?

Barbara Streisand
Barbara Streisandasal
2024-12-06 06:24:13532semak imbas

How Can I Resolve Go's

Menyimpulkan Parameter Jenis untuk Pelaksanaan Antara Muka Generik: "cannot infer V" Conundrum

Isu

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

Penjelasan

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.

Penyelesaian

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

Tambahan Maklumat

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!

Kenyataan:
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