Senior
// 1. kérdés. Mit fog kiírni a képernyőre? package main import "fmt" func main() { s := "Hello world" s[0] = "h" fmt.Println(s) }
sobes.tech MI
Válasz az MI-től
Ez a kód nem fog fordulni, és fordítási hibát fog eredményezni.
Az oka, hogy a Go-ban a stringek változatlan byte szeletek. Az olyan próbálkozás, hogy egy string egyedi byte-ját módosítjuk, mint például s[0] = 'h', nem lehetséges, és típus hibát eredményez "cannot assign to s[0]".
Ha módosítani szeretnéd a stringet, akkor azt byte vagy rune szeletté kell alakítani, módosítani a szükséges elemet, majd visszaalakítani stringgé:
package main
import "fmt"
func main() {
s := "Hello world"
b := []byte(s)
b[0] = 'h'
s = string(b)
fmt.Println(s) // "hello world" fog megjelenni
}