Was ist ein Rune in Go und wie unterscheidet es sich von Byte?
```html
Hallo zusammen! Ich habe gerade angefangen, Go zu lernen, und bin auf einen seltsamen Datentyp gestoßen — rune. Ich habe die Dokumentation gelesen, aber nicht ganz verstanden, wofür er benötigt wird.
Ich versuche, mit Strings zu arbeiten und über sie zu iterieren. Ich habe diesen Code geschrieben:
```go
package main
import "fmt"
func main() {
s := "Привет, мир!"
for i := 0; i < len(s); i++ {
fmt.Printf("%c ", s[i])
}
}
```
Aber anstelle der erwarteten Zeichen habe ich ein Durcheinander bekommen: `П Ð Ð¸ в е Ñ , м и Ñ !`. Ich hatte erwartet, jedes Zeichen des Strings der Reihe nach zu sehen, aber die Ausgabe entspricht offensichtlich nicht dem, was ich wollte. Warum passiert das?
Danach habe ich die Schleife durch `for i, r := range s` ersetzt, und alles hat korrekt funktioniert. In der Dokumentation steht, dass `r` den Typ `rune` hat.
Erklärt mir bitte:
1. Was ist `rune` in einfachen Worten?
2. Was ist der Unterschied zwischen `byte` und `rune`?
3. Wie funktioniert die Iteration mit `range` im Vergleich zur einfachen `for`-Schleife?
4. In welchen Situationen sollte man `rune` verwenden?
```