Middle
Kas vyksta su eilute operacijoje s[left] += 1? Ar tai indeksu pakeitimas ar sujungimas?
sobes.tech AI
Atsakymas iš AI
Go kalboje eilutės yra nekintamos (immutable). Operacija s[left] += 1 nėra tiesiogiai taikoma eilutėms, nes negalima keisti simbolio pagal indeksą.
Jei s yra eilutė, bandymas s[left] += 1 sukels kompiliatoriaus klaidą.
Jei s yra baitų skaidulė ([]byte), tada operacija s[left] += 1 pakeis baito reikšmę indeksu left, padidindama ją 1. Tai nėra sujungimas, o konkretaus elemento keitimas.
Pavyzdys:
s := []byte("abc")
s[1] += 1 // 'b' (98) taps 'c' (99)
fmt.Println(string(s)) // išves "acc"
Apibendrinant, eilutėms operacija yra neįmanoma, baitų skaidulėms — keitimas pagal indeksą yra įmanomas.