Mengapakah Saya Tidak Boleh Menggunakan Antara Muka dengan Kekangan Jenis dalam Penukaran Jenis dalam Go?

DDD
Lepaskan: 2024-11-07 14:23:02
asal
675 orang telah melayarinya

Why Can't I Use Interfaces with Type Constraints in Type Conversions in Go?

Had Antara Muka dan Kekangan Jenis

Antara muka Go menawarkan keselamatan jenis dan fleksibiliti kod, tetapi had tertentu dikenakan berkaitan penggunaannya. Satu isu biasa yang dihadapi oleh pembangun ialah ralat "antara muka mengandungi kekangan jenis: tidak boleh menggunakan antara muka dalam penukaran" apabila cuba menggunakan antara muka dengan elemen jenis.

Memahami Kekangan Jenis

Kekangan jenis merujuk kepada sekatan yang diletakkan pada jenis nilai yang boleh melaksanakan antara muka. Dalam Go, hanya antara muka asas (yang mengandungi kaedah sahaja) dibenarkan sebagai parameter jenis atau komponen antara muka lain. Antara muka yang membenamkan jenis setanding atau antara muka bukan asas lain dianggap bukan asas sendiri.

Sebab Ralat

Kod yang disediakan mengisytiharkan Nombor antara muka yang mengandungi gabungan int, int64, dan jenis float64. Memandangkan Nombor bukan asas kerana kekangan jenisnya, ia tidak boleh digunakan dalam penukaran jenis atau sebagai jenis elemen hirisan.

Penggunaan Antara Muka yang Boleh Diterima dengan Kekangan Jenis

Sementara antara muka dengan kekangan jenis tidak boleh digunakan secara langsung, ia masih boleh digunakan untuk tujuan yang dimaksudkan: menyekat jenis yang boleh melaksanakan jenis atau fungsi generik. Sebagai contoh, kod berikut mentakrifkan struktur dan fungsi generik menggunakan kekangan jenis:

type Coordinates[T Number] struct {
    x, y T // T must be a type that satisfies the Number interface
}

func sum[T Number](a, b T) T { // T must be a type that satisfies the Number interface
    return a + b
}
Salin selepas log masuk

Kesimpulan

Dalam Go, memahami had antara muka, terutamanya yang melibatkan kekangan jenis, adalah penting untuk pembangunan kod yang berkesan. Mengingati bahawa antara muka bukan asas tidak boleh digunakan dalam penukaran jenis langsung atau sebagai jenis elemen kepingan membantu mengelakkan ralat dan memastikan integriti kod.

Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Menggunakan Antara Muka dengan Kekangan Jenis dalam Penukaran Jenis dalam Go?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!