Ralat Pengendalian untuk Penunjuk Slice di Golang
Isu ini berpunca daripada ketidakupayaan untuk berjulat dari penuding ke hirisan. Ralat akan dilemparkan apabila cuba melelar ke atas penuding hirisan, seperti dalam coretan kod yang disediakan:
func (c *ClassRepository) populateClassRelationships(classes *[]entities.Class) { for i := range classes { // This line causes the error class := classes[i] // ... } }
Penyelesaian: Nyahrujuk Penunjuk
Golang tidak bukan secara automatik menyahrujuk penunjuk keratan, yang bermaksud anda mesti menyahrujuk penuding secara manual untuk mengakses keratan sebenar. Untuk membetulkan ralat, nyahrujuk penuding dalam pernyataan julat:
func (c *ClassRepository) populateClassRelationships(classes *[]entities.Class) { for i := range *classes { // Dereference the pointer here class := (*classes)[i] // ... } }
Memahami Penunjuk Slice
Penunjuk Slice dalam Golang berguna apabila anda perlu menghantar kepingan ke berfungsi tanpa menyalin tatasusunan asas. Pengoptimuman ini mengelakkan peruntukan memori dan overhed yang tidak perlu.
Walau bagaimanapun, adalah penting untuk diingat bahawa penunjuk hirisan pada asasnya menunjuk kepada hirisan, bukan tatasusunan. Oleh itu, tidak perlu menggunakan penuding kepada penuding kepada hirisan.
Rujukan
Atas ialah kandungan terperinci Bagaimanakah Saya Mengulangi Penunjuk Slice dengan Betul dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!