Sobes.tech
Middle

Čo sa deje s reťazcom pri operácii s[left] += 1? Je to zmena podľa indexu alebo konkatenácia?

sobes.tech AI

Odpoveď od AI

V jazyku Go sú reťazce nemenné (immutable). Operácia s[left] += 1 nie je priamo aplikovateľná na reťazce, pretože nie je možné zmeniť znak podľa indexu.

Ak je s reťazec, pokus o s[left] += 1 spôsobí chybu kompilátora.

Ak je s slice bajtov ([]byte), potom operácia s[left] += 1 zmení hodnotu bajtu na indexe left, zvýšením o 1. Nie je to konkatenácia, ale zmena konkrétneho prvku slice.

Príklad:

s := []byte("abc")
s[1] += 1 // 'b' (98) sa stane 'c' (99)
fmt.Println(string(s)) // vypíše "acc"

Stručne, pre reťazce je operácia nemožná, pre slice bajtov — zmena na indexe možná.