Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menulis Fungsi Generik dalam Pergi untuk Mengendalikan Jenis Berangka Berbeza?

Bagaimanakah Saya Boleh Menulis Fungsi Generik dalam Pergi untuk Mengendalikan Jenis Berangka Berbeza?

Linda Hamilton
Linda Hamiltonasal
2024-12-20 07:54:14844semak imbas

How Can I Write Generic Functions in Go to Handle Different Numerical Types?

Menulis Fungsi Generik untuk Jenis Berangka dalam Go

Dalam Go, apabila bekerja dengan jenis berangka yang berbeza seperti int dan float64, anda perlu membuat fungsi jenis khusus atau menukar nilai kepada jenis biasa. Pendekatan yang lebih elegan ialah menulis fungsi generik menggunakan parameter jenis dan kekangan antara muka.

Menggunakan Parameter Jenis dan Kekangan Nombor

Dalam Go 1.18 dan ke atas, anda boleh menentukan fungsi generik dengan parameter jenis T dan mengekang T kepada antara muka Nombor, ditakrifkan sebagai berikut:

import "golang.org/x/exp/constraints"

type Number interface {
    constraints.Integer | constraints.Float
}

Kekangan ini termasuk semua jenis integer yang ditandatangani dan tidak ditandatangani, serta jenis apungan. Fungsi generik anda boleh ditulis sebagai:

func add[T Number](a, b T) T {
    return a + b
}

Memanggil Fungsi Generik

Dengan fungsi generik ini, anda kini boleh melakukan operasi aritmetik pada mana-mana dua argumen jenis berangka . Contohnya:

a := 1
b := 2.5

fmt.Println(add(a, b)) // 3.5

Keterbatasan

Perhatikan bahawa argumen kepada fungsi generik mesti mempunyai jenis yang sama. Selain itu, operasi yang boleh dilakukan dalam fungsi adalah terhad kepada yang disokong oleh semua jenis dalam kekangan Nombor (iaitu, , -, *, dan /).

Mengendalikan Nombor Kompleks

Go juga menyokong jenis kompleks (complex64 dan complex128). Jika anda ingin memasukkannya dalam fungsi generik anda, anda boleh mengembangkan kekangan Nombor untuk memasukkan kekangan.Kompleks:

type Number interface {
    constraints.Integer | constraints.Float | constraints.Complex
}

Ingat bahawa pengendali aritmetik dalam Go disokong oleh jenis kompleks juga, kecuali untuk % operator dan operator bitwise, yang hanya disokong oleh jenis integer.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menulis Fungsi Generik dalam Pergi untuk Mengendalikan Jenis Berangka Berbeza?. 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