Middle
Mis juhtub stringiga operatsioonil s[left] += 1? Kas see on muutmine indeksi järgi või ühendamine?
sobes.tech AI
Vastus AI-lt
Go keeles stringid on muutumatud (immutable). Operatsioon s[left] += 1 ei ole otseselt rakendatav stringidele, kuna tähemärgi muutmine indeksi järgi ei ole võimalik.
Kui s on string, siis katse s[left] += 1 põhjustab kompileerimisvea.
Kui s on baitide viil ([]byte), siis operatsioon s[left] += 1 muudab indeksi left baitväärtust, suurendades seda 1 võrra. See ei ole ühendamine, vaid konkreetse elemendi muutmine viilul.
Näide:
s := []byte("abc")
s[1] += 1 // 'b' (98) muutub 'c' (99)
fmt.Println(string(s)) // väljastab "acc"
Kokkuvõttes, stringide puhul on operatsioon võimatu, baitide viilude puhul on indeksipõhine muutmine võimalik.