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