Rumah > pembangunan bahagian belakang > Golang > Mengapa Penukaran Terus Antara Muka Tiada kepada Penunjuk dalam Pergi Gagal?

Mengapa Penukaran Terus Antara Muka Tiada kepada Penunjuk dalam Pergi Gagal?

DDD
Lepaskan: 2024-12-02 01:14:10
asal
898 orang telah melayarinya

Why Does Direct Conversion of a Nil Interface to a Pointer in Go Fail?

Kisah Antara Muka Nil dan Penukaran Penunjuk

Di Golang, cuba menukar antara muka nol terus kepada penunjuk jenis data tertentu , seperti yang ditunjukkan dalam coretan kod yang disediakan, akan mengakibatkan ralat. Ralat ini berlaku kerana pembolehubah antara muka nil boleh memegang nilai jenis dinamik yang berbeza atau tiada nilai sama sekali.

Penegasan jenis n = p.(*Nod) gagal kerana ia menjangkakan pembolehubah antara muka p mengandungi bukan -nil nilai jenis *Nod. Walau bagaimanapun, memandangkan p adalah sifar, ia tidak boleh dihantar ke jenis data tertentu.

Pendekatan alternatif adalah untuk menetapkan sifar secara eksplisit kepada pembolehubah penunjuk jenis data tertentu menggunakan sintaks berikut: n = (*Nod )(tiada). Tugasan ini menetapkan penuding n untuk menunjuk kepada nilai sifar bagi *Jenis Nod, iaitu sifar.

Untuk mengendalikan nilai antara muka sifar dengan lebih berkesan, pertimbangkan untuk menggunakan bentuk penegasan jenis "koma-ok": jika n, ok := p.(*Nod); ok {...}. Borang ini mengembalikan dua nilai: n, yang akan menjadi nilai antara muka jika penegasan jenis berjaya, dan ok, yang menunjukkan sama ada penegasan jenis itu berjaya. Jika nilai antara muka adalah sifar, ok akan menjadi palsu dan n ialah nilai sifar jenis sasaran.

Atas ialah kandungan terperinci Mengapa Penukaran Terus Antara Muka Tiada kepada Penunjuk dalam Pergi Gagal?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan