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