Sobes.tech
Senior

// Domanda 1. Cosa verrà visualizzato sullo schermo? package main import "fmt" func main() { s := "Hello world" s[0] = "h" fmt.Println(s) }

sobes.tech AI

Risposta dell'AI

Questo codice non verrà compilato e genererà un errore di compilazione.

Il motivo è che le stringhe in Go sono slice di byte immutabili. Tentare di modificare un byte singolo di una stringa, come in s[0] = 'h', non è possibile e causerà un errore di tipo "cannot assign to s[0]".

Se si desidera modificare una stringa, bisogna convertirla in una slice di byte o rune, modificare l'elemento necessario e poi convertirla di nuovo in stringa:

package main

import "fmt"

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