Sobes.tech
Senior

// Otázka 1. Mit zobrazí na obrazovce? package main import "fmt" func main() { s := "Hello world" s[0] = "h" fmt.Println(s) }

sobes.tech AI

Odpověď od AI

Tento kód se nezkompiluje a způsobí chybu při kompilaci.

Důvodem je, že řetězce v Go jsou neměnné segmenty bytů. Pokus o změnu jednotlivého bytu v řetězci, například s[0] = 'h', není možný a povede k chybě typu "cannot assign to s[0]".

Pokud je potřeba řetězec změnit, je třeba jej převést na segment bytů nebo rune, změnit požadovaný prvek a poté jej zpět převést na řetězec:

package main

import "fmt"

func main() {
    s := "Hello world"
    b := []byte(s)
    b[0] = 'h'
    s = string(b)
    fmt.Println(s) // vypíše "hello world"
}