Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menggunakan Operator Pesanan dengan Selamat (<, >, <=, >=) dengan Go Generics?

Bagaimanakah Saya Boleh Menggunakan Operator Pesanan dengan Selamat (<, >, <=, >=) dengan Go Generics?

DDD
Lepaskan: 2024-12-11 13:27:18
asal
238 orang telah melayarinya

How Can I Safely Use Order Operators (<, >, <=, >=) dengan Go Generics?
, =) dengan Go Generics? " />

Go Generik: Operator Pesanan dengan Kekangan Setanding

Dalam Go 1.18, generik membenarkan kekangan yang disesuaikan untuk menguatkuasakan keserasian jenis. Walau bagaimanapun, apabila cuba menggunakan '>' pengendali dengan kekangan 'sebanding', ralat mungkin timbul.

Kekangan 'sebanding'

Kekangan 'sebanding' mengesahkan bahawa sesuatu jenis menyokong pengendali kesaksamaan ('==' dan '!= '). Ia merangkumi jenis yang layak sebagai kunci peta, termasuk tatasusunan dan struct dengan medan yang setanding dikecualikan kerana ia boleh menyebabkan panik masa jalan semasa perbandingan.

Dipesan lwn. Sebanding

Walaupun spesifikasi Go menyebut pengendali pesanan di bawah istilah "pengendali perbandingan", mereka membezakan antara kesetaraan ('==' dan '!=') dan operator pesanan ('<', '>', '<=', '>='). Pesanan terhad kepada jenis yang 'dipesan.'

Versi dan Penyelesaian Go

Go 1.21

  • Perkenalkan 'cmp.Ordered' daripada standard perpustakaan.

Pergi 1.18 hingga 1.20

  • Gunakan 'constraints.Ordered' daripada pakej eksperimen 'golang.org/x/exp'. Kekangan ini menyokong pengendali pesanan dan termasuk integer, apungan dan rentetan.

Contoh:

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

func getBiggerNumber[T constraints.Ordered](t1, t2 T) T {
    if t1 > t2 {
        return t1
    }
    return t2
}
Salin selepas log masuk

Dengan memilih kekangan yang sesuai, anda memastikan keserasian jenis dan tingkah laku perbandingan yang betul dalam fungsi generik anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Operator Pesanan dengan Selamat (<, >, <=, >=) dengan Go Generics?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan