Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah anda melaksanakan fungsi perbandingan untuk jenis tersuai dalam Go?

Bagaimanakah anda melaksanakan fungsi perbandingan untuk jenis tersuai dalam Go?

Susan Sarandon
Susan Sarandonasal
2024-11-04 05:53:01716semak imbas

How do you implement comparison functionality for custom types in Go?

Antara Muka Setanding dalam Go

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.

Mentakrifkan Antara Muka 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).

Melaksanakan Antara Muka

Untuk jenis tersuai untuk dianggap setanding, ia mesti melaksanakan antara muka Sebanding:

type MyType struct {
    // ...
}

func (t MyType) Compare(other MyType) int {
    // ...
}

Menggunakan Antara Muka Sebanding

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!

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