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.
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.
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.
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 }
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!