constraints
ini berfungsi dengan mana -mana jenis yang melaksanakan antara muka
, constraints
, constraints.Integer
Percubaan untuk menggunakannya dengan jenis yang tidak diperintahkan (seperti constraints.Float
) akan mengakibatkan kesilapan masa kompilasi, mencegah kemalangan runtime. Penggunaan kekangan jenis menghapuskan keperluan pemeriksaan dan penukaran jenis eksplisit. Taipkan pernyataan adalah rawan ralat dan membuat kod kurang dibaca. Dengan menggunakan kekangan, pengkompil menguatkuasakan keselamatan jenis pada masa kompilasi, memastikan bahawa hanya jenis yang sesuai digunakan dengan fungsi generik. Contoh terdahulu dengan sempurna menunjukkan ini: fungsi
package main import ( "fmt" "golang.org/x/exp/constraints" ) func Max[T constraints.Ordered](a, b T) T { if a > b { return a } return b } func main() { fmt.Println(Max[int](10, 5)) // Output: 10 fmt.Println(Max[float64](3.14, 2.71)) // Output: 3.14 //fmt.Println(Max[string]("hello", "world")) // This will result in a compile-time error }
atau jenis pernyataan untuk mengendalikan jenis angka yang berbeza. Max
Pergi: constraints.Ordered
Number
sebagai parameter jenis generik mungkin terlalu luas; Integer
atau Float
akan lebih tepat. Ini meningkatkan kebolehbacaan dan kebolehkerjaan. Elakkan membuat fungsi generik yang terlalu kompleks yang cuba melakukan terlalu banyak. Gunakan mereka untuk mengelakkan menentukan kekangan anda sendiri melainkan benar -benar diperlukan. Ini memastikan konsistensi dan mengelakkan kesilapan yang berpotensi. Dalam sesetengah kes, pelaksanaan khusus jenis mungkin lebih cekap. Profil kod anda untuk mengenal pasti kesesakan prestasi dan pertimbangkan pengoptimuman jika diperlukan. Melaksanakan mekanisme pengendalian ralat yang sesuai. Pakej Atas ialah kandungan terperinci Bagaimana saya menulis fungsi generik yang berfungsi dengan jenis angka yang berbeza di GO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!