Cara Membuat Fungsi Generik untuk Jenis Berangka dalam Go
Sebagai pengguna JavaScript dan TypeScript, anda mungkin tertanya-tanya tentang mengendalikan jenis berangka dalam Go semasa bekerja dengan int dan terapung. Artikel ini meneroka cara terbaik untuk mencipta fungsi generik yang boleh menerima sebarang hujah berangka.
Fungsi Generik dalam Go 1.18 dan Ke Atas
Dengan pengenalan parameter jenis dalam Pergi 1.18, anda kini boleh menentukan fungsi yang diparameterkan dalam jenis T. Menggunakan kekangan antara muka, anda boleh menyekat T kepada jenis berangka.
func add[T Number](a, b T) T { return a + b }
Di sini, kekangan Nombor ditakrifkan menggunakan pakej golang.org/x/exp/constraints:
type Number interface { constraints.Integer | constraints.Float }
Kekangan ini memastikan T mestilah jenis yang memenuhi sama ada kekangan.Integer atau kekangan. Terapung.
Menggunakan Fungsi Generik
Fungsi tambah generik ini boleh mengendalikan hujah dari sebarang jenis angka. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa kedua-dua hujah mestilah daripada jenis yang sama. Contohnya:
fmt.Println(add(1, 2)) // 3 fmt.Println(add(a, b)) // 3 fmt.Println(add(1.5, 3.2)) // 4.7
Percubaan untuk mencampurkan jenis, seperti add(2.5, 2), akan mengakibatkan ralat penyusunan.
Sokongan Nombor Kompleks
Anda boleh melanjutkan kekangan Nombor untuk memasukkan jenis kompleks:
type Number interface { constraints.Integer | constraints.Float | constraints.Complex }
Walaupun disokong oleh jenis kompleks, pengendali aritmetik , -, *, dan / kekal sebagai satu-satunya pengendali yang disokong. Pengendali modulus % dan bitwise tidak disokong untuk jenis kompleks.
Atas ialah kandungan terperinci Bagaimana untuk Menulis Fungsi Generik untuk Jenis Berangka dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!