Sobes.tech
Junior — Middle

Агар нусхаро ба функсия бе нишондиҳанда гузаронем, оё ба массиви аслӣ таъсир мерасонад?

sobes.tech AI

Ҷавоб аз AI

Дар Go, қисм (slice) структураест, ки дорои ишора ба массив, дарозӣ ва қобилияти аст. Вақте ки шумо қисмро бе ишора ба функсия мегузаронед, структураи қисм худ нусхабардорӣ мешавад, аммо массиви зеризаминаш нусхабардорӣ намешавад.

Ин маъно дорад, ки тағирот дар унсурҳои қисм дар дохили функсия ба массиви аслӣ таъсир мерасонад, зеро ҳарду қисм ба як массив ишора мекунанд. Аммо, агар дар дохили функсия шумо худи қисмро тағир диҳед (масалан, ба он қисми нав таъин кунед ё дарозии онро тағир диҳед), ин тағирот ба қисми берун аз функсия таъсир намерасонад.

Масалан:

func modifySlice(s []int) {
    s[0] = 100 // массиви аслӣ тағир дода мешавад
    s = append(s, 200) // қисми маҳаллӣ тағир дода мешавад, таъсир нарасонад ба қисми хориҷӣ
}

func main() {
    arr := []int{1, 2, 3}
    modifySlice(arr)
    fmt.Println(arr) // Натиҷа: [100 2 3]
}

Хулоса: гузаронидани қисм бе ишора имкон медиҳад, ки унсурҳои массиви аслӣ тағир дода шаванд, аммо тағир додани худи қисм (дарозӣ, ишора) дар берун аз функсия имконнопазир аст.