Dalam Go 1.18, pengenalan generik membawa kemungkinan yang menarik, tetapi juga memberikan cabaran. Satu cabaran sedemikian ialah ujian fungsi generik dengan pendekatan berasaskan jadual.
Dilema: Logik Pengujian Berulang
Apabila jadual menguji fungsi generik, seseorang menghadapi isu mengisytiharkan semula logik ujian untuk setiap fungsi. Ini adalah hasil daripada ketidakupayaan untuk menyatakan nilai T secara langsung dalam tandatangan fungsi generik.
Pendekatan Pragmatik
Walaupun had ini, mencapai ujian jadual untuk generik memerlukan penyelesaian praktikal:
func runTestCase[T Item](tc testCase[T]) func(t *testing.T) { return func(t *testing.T) { tc.start.add(tc.key, tc.val) assert.Equal(t, tc.start, tc.expected) } }
Fungsi pembantu ini menghilangkan logik tetapan ujian dan pengesahan biasa, tanpa mengira jenis T tertentu yang sedang diuji.
Ujian Terpilih: Kompromi yang Wajar
Adalah penting untuk menyedari bahawa ujian menyeluruh bagi setiap jenis T yang mungkin selalunya tidak diperlukan. Tujuan generik adalah untuk mencipta kod yang beroperasi dengan lancar pada mana-mana jenis yang mematuhi. Oleh itu, ujian unit harus tertumpu terutamanya pada senario di mana jenis yang berbeza mempamerkan gelagat yang berbeza, terutamanya apabila ia melibatkan pengendali dengan tafsiran yang berbeza-beza (cth., untuk jenis angka lwn. penggabungan rentetan).
Cari Inspirasi: Pelajaran daripada Komuniti
Apabila berhadapan dengan cabaran yang sama, merujuk kepada perbincangan dalam komuniti boleh memberikan pandangan yang berharga. Dalam kes ini, urutan berikut menawarkan perspektif tambahan:
Melalui penyelesaian praktikal dan pendekatan yang seimbang untuk ujian, ia mungkin untuk menguji fungsi generik dengan berkesan dalam Go 1.18 dan membuka kunci potensi penuhnya.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mejadualkan Fungsi Generik Secara Berkesan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!