Junior — Middle
Cosa rappresenta il risultato dell'esecuzione dell'operatore [] per il tipo di dato stringa?
sobes.tech AI
Risposta dell'AI
In Go, l'operatore [] per il tipo di dato string viene utilizzato per ottenere una fetta di byte della stringa o un byte singolo per indice. La stringa in Go è una sequenza immutabile di byte (UTF-8). Accedendo a str[i], viene restituito un byte di tipo byte (alias di uint8), e non un carattere nel senso comune, poiché i caratteri Unicode possono occupare più byte.
Esempio:
s := "Привет"
fmt.Println(s[0]) // Mostrerà il byte corrispondente alla prima parte del carattere 'П'
fmt.Println(string(s[0])) // Mostrerà un carattere errato, poiché non è un carattere UTF-8 completo
// Per ottenere caratteri (rune), è necessario convertire la stringa in una slice di rune:
r := []rune(s)
fmt.Println(string(r[0])) // Mostrerà 'П'
Pertanto, l'operatore [] per le stringhe restituisce un byte per indice, non un carattere Unicode.