Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menguji Unit Generik Go Generik dengan Berkesan dengan Jenis Campuran dalam Kekangan Kesatuan?

Bagaimanakah Saya Boleh Menguji Unit Generik Go Generik dengan Berkesan dengan Jenis Campuran dalam Kekangan Kesatuan?

Patricia Arquette
Lepaskan: 2025-01-04 16:46:39
asal
977 orang telah melayarinya

How Can I Effectively Unit Test Go Generics Functions with Mixed Types in a Union Constraint?

Go Generics - Unions and Unit Testing with Mixed Types

Memahami Unions

Unions in Go generics mewakili satu set jenis yang boleh digunakan untuk mengekang parameter jenis generik. Ia digunakan semata-mata dalam kekangan antara muka, menunjukkan bahawa parameter jenis generik T hanya boleh menerima jenis yang disertakan dalam kesatuan.

Menggunakan Kesatuan dalam Ujian Unit

Apabila menulis ujian unit untuk fungsi generik, anda mungkin menghadapi cabaran ujian dengan jenis yang berbeza. Dalam kes anda, anda bertujuan untuk menguji fungsi Perbezaan anda dengan kedua-dua int dan rentetan dalam ujian jadual yang sama.

Mengapa Antara Muka intOrString Gagal

Percubaan anda untuk mencipta kekangan antara muka intOrString untuk ujian menghadapi ralat kerana intOrString bukan jenis yang sah. Ia adalah kekangan yang mengehadkan parameter jenis generik T kepada sama ada int atau rentetan. Anda tidak boleh membuat seketika jenis menggunakan kekangan jenis.

Penyelesaian: Menggunakan Bekas Generik

Daripada menggunakan kekangan intOrString, anda harus mengisytiharkan hirisan input dan output ujian anda sebagai jenis generik dengan kekangan intOrString:

type testDifferenceInput[T intOrString] [][]T
type testDifferenceOutput[T intOrString] []T
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini tidak akan menyelesaikan masalah anda sepenuhnya. Bekas generik tidak boleh memuatkan item daripada jenis yang berbeza. Dalam kepingan ujian anda, anda mempunyai dua jenis berbeza: testDifference[int] dan testDifference[string].

Memisahkan Kepingan Mengikut Jenis

Untuk menampung jenis yang berbeza dalam ujian unit anda, anda boleh memisahkan kepingan mengikut jenis:

ttInts := []testDifference[int]{
    // ... test cases for ints
}
ttStrs := []testDifference[string]{
    // ... test cases for strings
}
Salin selepas log masuk

Operasi pada Kekangan Kesatuan

Kesatuan kekangan mengehadkan operasi yang boleh dilakukan pada parameter jenis generik. Dalam kes int | rentetan, hanya operasi yang digunakan untuk kedua-dua jenis dibenarkan, seperti perbandingan, susunan dan penambahan (hanya untuk rentetan).

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menguji Unit Generik Go Generik dengan Berkesan dengan Jenis Campuran dalam Kekangan Kesatuan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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