Sobes.tech
Middle

Šta se dešava sa stringom u operaciji s[left] += 1? Da li je to promena po indeksu ili konkatenacija?

sobes.tech АИ

Одговор од АИ

U jeziku Go, nizovi su nepromenljivi (immutable). Operacija s[left] += 1 nije direktno primenjiva na nizove, jer ne može da se menja karakter po indeksu.

Ako je s string, pokušaj s[left] += 1 će izazvati grešku pri kompajliranju.

Ako je s slice bajtova ([]byte), tada će operacija s[left] += 1 promeniti vrednost bajta na indeksu left, povećavajući je za 1. Ovo nije konkatenacija, već promena određenog elementa slice-a.

Primer:

s := []byte("abc")
s[1] += 1 // 'b' (98) postaje 'c' (99)
fmt.Println(string(s)) // ispisuje "acc"

Ukratko, za stringove je operacija nemoguća, za slice-ove bajtova — promena po indeksu.