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!