Middle
Дар амалиёти s[left] += 1 чӣ рӯй медиҳад бо сатр? Ин тағирот дар индекс ё пайвастшавӣ аст?
sobes.tech AI
Ҷавоб аз AI
Дар забони Go, сатрҳо тағирнопазир (immutable) мебошанд. Амалиёти s[left] += 1 ба таври мустақим ба сатрҳо татбиқ намешавад, зеро тағир додани рамз дар асоси индекс имконнопазир аст.
Агар s як сатр бошад, кӯшиши s[left] += 1 хатои компилятсияро ба вуҷуд меорад.
Агар s як слайс байтҳо ([]byte) бошад, пас амалиёти s[left] += 1 арзиши байти дар индекс left-ро тағир медиҳад, бо зиёд кардани он ба 1. Ин на як пайвандсозӣ, балки тағир додани унсури муайян дар слайс мебошад.
Масалан:
s := []byte("abc")
s[1] += 1 // 'b' (98) ба 'c' (99) табдил меёбад
fmt.Println(string(s)) // "acc"-ро мебарорад
Хулоса, барои сатрҳо амалиёт имконнопазир аст, барои слайсҳои байт — тағирот бо индекс мумкин аст.