Sobes.tech
Senior

// Pytanie 1. Co zostanie wyświetlone na ekranie? package main import "fmt" func main() { s := "Hello world" s[0] = "h" fmt.Println(s) }

sobes.tech AI

Odpowiedź od AI

Ten kod nie zostanie skompilowany i spowoduje błąd kompilacji.

Powód jest taki, że łańcuchy w Go są niezmiennymi fragmentami bajtów. Próba zmiany pojedynczego bajtu w łańcuchu, tak jak w s[0] = 'h', jest niemożliwa i spowoduje błąd typu "cannot assign to s[0]".

Jeśli chcesz zmodyfikować łańcuch, powinieneś go przekonwertować na fragment bajtów lub rune, zmienić potrzebny element, a następnie przekonwertować go z powrotem na łańcuch:

package main

import "fmt"

func main() {
    s := "Hello world"
    b := []byte(s)
    b[0] = 'h'
    s = string(b)
    fmt.Println(s) // wyświetli "hello world"
}