Go: Mengulangi Penunjuk ke Slices
Apabila bekerja dengan kepingan Go, adalah penting untuk memahami cara penunjuk dan kepingan berinteraksi. Kod yang disediakan melemparkan ralat "tidak boleh julat atas penuding ke hiris" kerana ia cuba mengulangi penuding ke hirisan tanpa mengabaikannya.
Keratan ialah struktur data fleksibel yang menghala ke tatasusunan. Walaupun ia berkongsi beberapa persamaan dengan penunjuk, ia berbeza kerana hirisan sudah merangkum penuding ke tatasusunan asas. Oleh itu, mencipta penuding pada hirisan tiada tujuan dan boleh menyebabkan kekeliruan.
Dalam coretan kod, ralat berlaku dalam fungsi populateClassRelationships, khususnya dalam baris:
for i := range classes {
classes := new([]entities.Class)
Daripada menggunakan penuding ke hirisan (*[]entiti.Kelas), pendekatan yang betul adalah dengan menghantar hirisan itu sendiri, sebagai dilihat dalam kod yang diubah suai:
func (c *ClassRepository) ClassesForLastNDays(days int) []entities.Class { classes := new([]entities.Class)
Dengan mengubah suai kod dengan cara ini, Go secara automatik membatalkan rujukan hirisan dan membenarkan lelaran yang betul. Rujuk dokumentasi Go rasmi untuk mendapatkan maklumat lanjut tentang kepingan dan penunjuk.
Atas ialah kandungan terperinci Mengapa Adakah Go Throw Ralat 'tidak boleh berjulat melepasi penuding ke potong'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!