Menghantar ke Alias Taip dalam Go
Masalah:
Dalam coretan contoh, penegasan jenis pertama berjaya dengan menyatakan secara eksplisit tandatangan fungsi. Walau bagaimanapun, dakwaan kedua, yang cuba menghantar kepada jenis alias somethingFuncy, panik. Mengapakah ini berlaku, dan adakah terdapat cara untuk menghantar ke tandatangan fungsi yang lebih panjang?
Penjelasan:
Bertentangan dengan tanggapan salah bahawa pemutus jenis terlibat di sini, Go hanya menawarkan penegasan jenis dan penukaran jenis. Tumpuan adalah pada penegasan jenis, yang digunakan dalam coretan yang disediakan.
Perbezaan utama antara penegasan jenis dan penukaran terletak pada kriteria yang digunakan untuk perbandingan. Dalam penukaran, seperti contoh dengan int dan MyInt, jenis asas dipertimbangkan. Walau bagaimanapun, dengan penegasan jenis, hanya jenis yang tepat diambil kira.
Untuk menghuraikan, dalam contoh di mana a adalah daripada jenis int, penegasan a.(MyInt) gagal kerana int tidak sama dengan MyInt, walaupun kedua-duanya berkongsi asas yang sama taip.
tl;dr:
Taip penegasan semak identiti jenis tepat, yang bermaksud alias jenis seperti somethingFuncy berbeza daripada func(int) bool. Oleh itu, pelakon kedua gagal.
Bonus:
Kod yang digunakan untuk mengesahkan identiti jenis dalam coretan disediakan untuk rujukan, mempamerkan perbandingan langsung yang terlibat dalam penegasan proses.
Atas ialah kandungan terperinci Mengapakah Penegasan Jenis Gagal Apabila Menghantar ke Alias Jenis dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!