Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menulis Fungsi Generik untuk Jenis Berangka dalam Go?

Bagaimana untuk Menulis Fungsi Generik untuk Jenis Berangka dalam Go?

Barbara Streisand
Barbara Streisandasal
2024-12-18 00:00:14592semak imbas

How to Write a Generic Function for Numerical Types in Go?

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!

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