Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Go Generics Memudahkan Pengiraan Berangka?

Bagaimanakah Go Generics Memudahkan Pengiraan Berangka?

Barbara Streisand
Lepaskan: 2024-12-21 02:07:09
asal
865 orang telah melayarinya

How Can Go Generics Simplify Numerical Calculations?

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
}
Salin selepas log masuk

Kekangan Nombor boleh ditakrifkan menggunakan pakej golang.org/x/exp/constraints:

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

type Number interface {
    constraints.Integer | constraints.Float
}
Salin selepas log masuk

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)
Salin selepas log masuk

Keterbatasan

Walaupun fungsi generik memberikan fleksibiliti, perlu diingat batasan berikut:

  • Argumen mesti ada jenis yang sama.
  • Pengendali aritmetik hanya disokong untuk semua jenis dalam kekangan. Dalam kes ini, semua jenis angka menyokong pengendali.
  • Nilai NaN dan infiniti boleh ditemui apabila bekerja dengan terapung.

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!

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