Junior — Middle
Was stellt das Ergebnis der Ausführung des Operators [] für den Datentyp String dar?
sobes.tech KI
Antwort von AI
In Go wird der Operator [] für den Datentyp String verwendet, um eine Byte-Slice des Strings oder ein einzelnes Byte nach Index zu erhalten. Der String in Go ist eine unveränderliche Sequenz von Bytes (UTF-8). Beim Zugriff auf str[i] wird ein Byte vom Typ byte (Alias für uint8) zurückgegeben, und nicht ein Zeichen im üblichen Sinne, da Unicode-Zeichen mehrere Bytes umfassen können.
Beispiel:
s := "Привет"
fmt.Println(s[0]) // Gibt das Byte aus, das zum ersten Teil des Zeichens 'П' gehört
fmt.Println(string(s[0])) // Gibt ein falsches Zeichen aus, da es kein vollständiges UTF-8-Zeichen ist
// Um Zeichen (Runen) zu erhalten, muss die Zeichenkette in ein Slice von Runen umgewandelt werden:
r := []rune(s)
fmt.Println(string(r[0])) // Gibt 'П' aus
Daher gibt der Operator [] für Strings ein Byte nach Index zurück, nicht ein Unicode-Zeichen.