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