Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menggunakan Kesatuan Go Generik dengan Berkesan dalam Kekangan Jenis untuk Pengujian?

Bagaimanakah Saya Boleh Menggunakan Kesatuan Go Generik dengan Berkesan dalam Kekangan Jenis untuk Pengujian?

Susan Sarandon
Lepaskan: 2024-12-19 21:42:11
asal
959 orang telah melayarinya

How Can I Effectively Use Go Generics Unions in Type Constraints for Testing?

Go Generics - Jenis Kekangan dan Kesatuan Dijelaskan

Dalam Go generik, kesatuan memainkan peranan khusus sebagai sebahagian daripada kekangan antara muka. Mari kita bongkarkan maksud ini dan bagaimana ia berkaitan dengan soalan anda tentang ujian dengan jenis yang berbeza.

Apakah Kesatuan?

Dalam kekangan jenis generik, kesatuan mentakrifkan satu set jenis yang mesti dipadankan oleh parameter jenis. Contohnya:

type intOrString interface {
    int | string
}
Salin selepas log masuk

Kekangan ini memastikan bahawa sebarang parameter jenis generik T mestilah sama ada int atau rentetan.

Mengapa Kesatuan Tidak Boleh Digunakan sebagai Jenis?

Kekangan antara muka dengan kesatuan bukan jenis antara muka biasa. Perbezaan ini disengajakan dalam reka bentuk generik Go.

Operasi Dibenarkan pada Kekangan Kesatuan

Fungsi menggunakan parameter jenis dengan kekangan kesatuan hanya boleh melaksanakan operasi yang dibenarkan oleh setiap ahli set kesatuan. Ini termasuk:

  • Pengisytiharan boleh ubah
  • Penukaran
  • Perbandingan
  • Pemesanan
  • Pengendali

Memohon kepada Anda Soalan

Pendekatan asal anda menggunakan intOrString sebagai jenis, yang tidak dibenarkan. Untuk menggunakan kekangan kesatuan dengan betul, ubah suai kod anda seperti berikut:

type testDifferenceInput[T intOrString] [][]T
type testDifferenceOutput[T intOrString] []T
type testDifference[T intOrString] struct {
    input testDifferenceInput[T]
    output testDifferenceOutput[T]
}

func TestDifference(t *testing.T) {
    var ttInts []testDifference[int]
    var ttStrings []testDifference[string]

    // Populate ttInts and ttStrings with test cases

    for _, tt := range append(ttInts, ttStrings) {
        // Execute the test case
    }
}
Salin selepas log masuk

Dengan mengasingkan kes ujian berdasarkan parameter jenis, anda boleh mengatasi had bahawa bekas generik tidak boleh menyimpan item yang berbeza jenis.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Kesatuan Go Generik dengan Berkesan dalam Kekangan Jenis untuk Pengujian?. 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