Sobes.tech
Senior

// Питање 1. Шта ће се приказати на екрану? package main import "fmt" func main() { s := "Hello world" s[0] = "h" fmt.Println(s) }

sobes.tech АИ

Одговор од АИ

Ovaj kod neće biti kompajliran i izazvaće grešku tokom kompajlacije.

Razlog je što su stringovi u Go-u nemodifikabilni segmenti bajtova. Pokušaj da se izmeni pojedinačni bajt u stringu, kao u s[0] = 'h', nije moguć i dovodi do greške tipa "cannot assign to s[0]".

Ako želite da izmenite string, treba ga pretvoriti u segment bajtova ili runa, izmeniti potrebni element i zatim ga ponovo pretvoriti u string:

package main

import "fmt"

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