Sobes.tech
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.