Penegasan dan Penukaran Jenis Dinamakan dalam Go
Pertimbangkan senario berikut di mana jenis tersuai ditakrifkan untuk mentakrifkan semula jenis yang telah ditetapkan:
<code class="go">type Answer string</code>
Sekarang, mari cuba gunakan jenis tersuai ini dalam fungsi yang menerima jenis asal yang telah ditetapkan:
<code class="go">func acceptMe(str string) { fmt.Println(str) } func main() { type Answer string var ans Answer = "hello" // Type assertion fails acceptMe(ans.(string)) // Conversion works acceptMe(string(ans)) }</code>
Jenis penegasan ans.(rentetan) gagal dengan ralat : penegasan jenis tidak sah: ans.(rentetan) (jawapan bukan antara muka di sebelah kiri). Sebaliknya, rentetan penukaran (ans) berjaya. Tingkah laku ini menimbulkan persoalan:
Mengapa penegasan jenis gagal, tetapi penukaran berfungsi?
Untuk memahami perkara ini, mari kita jelaskan bahawa penegasan jenis hanya berfungsi untuk antara muka. Antara muka boleh mempunyai jenis asas yang sewenang-wenangnya, menjadikan penegasan jenis dan suis jenis penting. Penegasan jenis mengembalikan nilai boolean bersama-sama dengan hasilnya, menunjukkan kejayaan penegasan.
Sebaliknya, Jawapan jenis tersuai anda mempunyai jenis asas yang tetap, iaitu rentetan. Memandangkan anda sudah mengetahui jenis yang tepat, anda tidak memerlukan penegasan jenis kerana penukaran daripada Jawapan kepada rentetan akan sentiasa berjaya. Sintaks untuk penukaran ini ialah rentetan(ans).
Atas ialah kandungan terperinci Mengapa Penegasan Jenis Gagal Tetapi Penukaran Berfungsi dengan Jenis Tersuai dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!