Avatar ·

Was ist ein Rune in Go und wie unterscheidet es sich von einem normalen Byte?

Ich habe gerade angefangen, Go zu lernen, und bin auf eine seltsame Sache gestoßen — den Typ `rune`. Anscheinend ist es eine ganze Zahl, aber warum gibt es dann einen separaten Typ? Ich versuche, mit Strings zu arbeiten, und habe bemerkt, dass ich seltsame Zahlen bekomme, wenn ich ein Zeichen per Index nehme, und keine Buchstaben. Hier ist ein Beispiel, das mich verwirrt hat: ```go package main import "fmt" func main() { s := "Привет, мир!" fmt.Println(s[0]) // Gibt 208 aus, nicht 'П' fmt.Println(string(s[0])) // Gibt 'Ð' aus, nicht 'П' } ``` Warum passiert das? Ich habe erwartet, dass `s[0]` mir das erste Zeichen des Strings gibt. Aber stattdessen bekomme ich irgendeinen Müll. Ich habe gelesen, dass man `rune` verwenden soll, verstehe aber nicht genau, wie. Ich habe es so versucht: ```go r := []rune(s) fmt.Println(string(r[0])) // Jetzt gibt es 'П' aus ``` Das funktioniert, aber ich verstehe nicht, warum.