Sobes.tech
Senior

// Klausimas 1. Ką išves į ekraną? package main import "fmt" func main() { s := "Hello world" s[0] = "h" fmt.Println(s) }

sobes.tech AI

Atsakymas iš AI

Šis kodas nebus sukompiliuotas ir sukels kompiliacijos klaidą.

Priežastis ta, kad Go eilutės yra nepakeičiami baitų segmentai. Bandymas pakeisti atskirą baitą eilutėje, kaip s[0] = 'h', nėra įmanomas ir sukels klaidą "cannot assign to s[0]".

Jei norite pakeisti eilutę, turite ją konvertuoti į baitų arba rune segmentą, pakeisti reikalingą elementą ir tada vėl konvertuoti į eilutę:

package main

import "fmt"

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