Dalam Go, tiada antara muka terbina dalam yang memerlukan jenis untuk melaksanakan fungsi perbandingan. Walau bagaimanapun, anda boleh mencipta antara muka anda sendiri untuk mentakrifkan jenis yang setanding.
Pendekatan biasa ialah mencipta antara muka dengan kaedah berikut:
type Comparable[T comparable] interface { Compare(other T) int }
Di mana T ialah jenis yang melaksanakan antara muka dan int mewakili hasil perbandingan (-1, 0, 1).
Untuk jenis tersuai untuk dianggap setanding, ia mesti melaksanakan antara muka Sebanding:
type MyType struct { // ... } func (t MyType) Compare(other MyType) int { // ... }
Setelah anda menentukan antara muka Sebanding, anda boleh menggunakannya untuk menyemak sama ada jenis setanding:
func IsComparable(i interface{}) bool { _, ok := i.(Comparable[i]) return ok }
Anda juga boleh menggunakan fungsi Less untuk membandingkan dua nilai setanding:
func Less(a, b Comparable[T]) bool { return a.Compare(b) < 0 }
Atas ialah kandungan terperinci Bagaimanakah anda melaksanakan fungsi perbandingan untuk jenis tersuai dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!