Sobes.tech
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
}