Fungsi Generik untuk Data Berangka dalam Go
Apabila mencipta kalkulator dalam Go, mengendalikan perbezaan antara integer dan terapung boleh menjadi satu cabaran. Terdapat beberapa cara untuk mendekati isu ini, termasuk:
Tukar Semuanya kepada Terapung
Pendekatan ini melibatkan penukaran semua input kepada terapung kerana terapung mempunyai julat yang lebih luas daripada integer. Walau bagaimanapun, ini boleh membawa kepada isu ketepatan untuk integer yang besar.
Buat Fungsi Berasingan untuk Setiap Jenis
Sebagai alternatif, anda boleh mencipta fungsi berasingan untuk setiap jenis, seperti addInt dan addFloat. Walaupun ini merupakan pendekatan yang tidak jelas, ia boleh membawa kepada penduaan kod dan pelat dandang.
Menggunakan Generik (Go 1.18 dan Ke Atas)
Dengan pengenalan generik dalam Go 1.18 , penyelesaian yang lebih elegan tersedia. Anda boleh mentakrifkan fungsi generik dengan parameter jenis terhad kepada jenis angka:
func add[T Number](a, b T) T { return a + b }
Kekangan Nombor boleh ditakrifkan menggunakan pakej golang.org/x/exp/constraints:
import ( "golang.org/x/exp/constraints" ) type Number interface { constraints.Integer | constraints.Float }
Dengan fungsi generik ini, anda boleh melakukan penambahan dengan sebarang jenis angka (integer, terapung, dan juga kompleks nombor):
fmt.Println(add(1, 2)) // 3 (int + int) fmt.Println(add(1.5, 3.2)) // 4.7 (float64 + float64)
Keterbatasan
Walaupun fungsi generik memberikan fleksibiliti, perlu diingat batasan berikut:
Dengan memanfaatkan generik, anda boleh menulis kod ringkas dan boleh digunakan semula yang mengendalikan data berangka dengan lancar dalam program Go anda.
Atas ialah kandungan terperinci Bagaimanakah Go Generics Memudahkan Pengiraan Berangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!