Sobes.tech
Senior

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

sobes.tech AI

Odpoveď od AI

Tento kód nebude možné skompilovať a spôsobí chybu počas kompilácie.

Dôvodom je, že reťazce v Go sú nemenné segmenty bajtov. Pokus o zmenu jednotlivého bajtu v reťazci, ako v s[0] = 'h', nie je možný a spôsobí chybu typu "cannot assign to s[0]".

Ak chcete reťazec zmeniť, musíte ho previesť na segment bajtov alebo rune, upraviť požadovaný prvok a potom ho znova previesť na reťazec:

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"
}