Mengapa Penegasan Jenis Gagal dengan Jenis Tersuai dalam Go?

Patricia Arquette
Lepaskan: 2024-11-04 08:49:30
asal
737 orang telah melayarinya

Why Does Type Assertion Fail with Custom Types in Go?

Penegasan dan Penukaran Jenis Dinamakan dalam Go

Apabila menentukan jenis tersuai dalam Go, anda boleh mentakrifkan semula jenis yang dipratentukan dengan nama baharu. Walau bagaimanapun, apabila cuba menggunakan jenis tersuai ini dalam fungsi yang menjangkakan jenis yang dipratentukan, ralat mungkin berlaku. Mari kita selidiki sebab di sebalik ralat ini dan teroka penyelesaian.

Pertimbangkan kod berikut:

<code class="go">type Answer string

func acceptMe(str string) {
    fmt.Println(str)
}

func main() {
    var ans Answer = "hello"

    // Cannot use ans (type Answer) as type string in function argument
    acceptMe(ans)

    // Invalid type assertion: ans.(string) (non-interface type Answer on left)
    acceptMe(ans.(string))

    // Works, but why?
    acceptMe(string(ans))
}</code>
Salin selepas log masuk

Mengapa Penegasan Jenis Gagal

Taip penegasan hanya berfungsi untuk antara muka. Antara muka boleh mempunyai sebarang jenis asas, membenarkan penegasan jenis atau suis jenis. Walau bagaimanapun, dalam kes ini, Jawapan ialah jenis tersuai dengan satu jenis asas, rentetan. Tidak ada keperluan untuk penegasan jenis kerana penukaran kepada jenis asas dijamin berjaya.

Mengapa Penukaran Berfungsi

Penukaran, sebaliknya, boleh dilakukan antara jenis yang mempunyai hubungan yang diketahui, seperti yang berlaku dengan Jawapan dan rentetan. Rentetan sintaks(ans) secara eksplisit menukar jenis Jawapan kepada jenis rentetan asas.

Kesimpulan

Adalah penting untuk memahami perbezaan antara penegasan jenis dan penukaran. Penegasan jenis harus digunakan dengan antara muka untuk menyemak jenis asas secara dinamik. Penukaran, sebaliknya, digunakan untuk menukar secara eksplisit antara jenis dengan perhubungan yang diketahui. Dalam kes Jawapan dan rentetan, penukaran ialah pendekatan yang disyorkan kerana ia menyediakan cara yang boleh diramal dan jelas untuk saling beroperasi dengan jenis asas.

Atas ialah kandungan terperinci Mengapa Penegasan Jenis Gagal dengan Jenis Tersuai 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
Artikel terbaru oleh pengarang
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!