Rumah >pembangunan bahagian belakang >Golang >Apakah Perbezaan Antara Penegasan Jenis dan Penukaran untuk Jenis Tersuai dalam Go?
Apabila bekerja dengan jenis tersuai dalam Go, adalah penting untuk memahami nuansa antara penegasan jenis dinamakan dan penukaran. Mari kita teroka konsep dengan contoh.
Pertimbangkan coretan kod di bawah, di mana kami mentakrifkan jenis tersuai Jawapan yang mentakrifkan semula jenis rentetan yang dipratentukan:
<code class="go">type Answer string</code>
Kami kemudian cuba menggunakan Jawapan dalam fungsi yang menjangkakan jenis rentetan:
<code class="go">func acceptMe(str string) { fmt.Println(str) } func main() { type Answer string var ans Answer = "hello" // Assertion fails: cannot use ans (type Answer) as type string in function argument acceptMe(ans) // Type assertion fails as well: invalid type assertion: ans.(string) (non-interface type Answer on left) acceptMe(ans.(string)) // Conversion succeeds. acceptMe(string(ans)) }</code>
Jenis penegasan hanya terpakai pada antara muka. Antara muka membenarkan jenis asas berubah-ubah. Untuk menentukan jenis sebenar, Go menggunakan penegasan jenis (x.(T)) atau suis taip (suis x := x.(jenis)). Penegasan mengembalikan nilai boolean yang menunjukkan jika penegasan itu berjaya.
Dalam kes kami, Jawapan ialah jenis bernama dengan jenis asas tetap (rentetan). Memandangkan jenis asas diketahui, tidak ada keperluan untuk penegasan. Menukar jenis Jawapan kepada rentetan menggunakan rentetan(ans) sudah memadai.
Atas ialah kandungan terperinci Apakah Perbezaan Antara Penegasan Jenis dan Penukaran untuk Jenis Tersuai dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!