Range vs. Byte Ranging über Strings
In Go unterscheidet sich das Verhalten beim Ranging über einen String und beim Zugriff auf einzelne Zeichen erheblich. Beim Bereich über eine Zeichenfolge sind die erhaltenen Werte vom Typ rune und stellen Unicode-Codepunkte dar. Umgekehrt werden beim Zugriff auf Zeichen über den Index (str[index]) Werte vom Typ Byte zurückgegeben. Das Verständnis dieser Unterscheidung ist von entscheidender Bedeutung.
Gemäß der Definition des Go-String-Datentyps ist ein String eine Folge von Bytes mit einer unveränderlichen Länge. Auf die Elemente einer Zeichenfolge kann über ganzzahlige Indizes zugegriffen werden. Dies steht im Einklang mit dem Verhalten von Indexierungszeichen, bei denen jedes Element ein einzelnes Byte darstellt.
Im Gegensatz dazu ermöglicht die Bereichsklausel in for-Schleifen die Iteration über verschiedene Datentypen, einschließlich Zeichenfolgen. Bei Zeichenfolgen iteriert for range über die Unicode-Codepunkte in der Zeichenfolge, beginnend mit dem ersten Byte. Jede Iteration ergibt den Index des ersten Bytes des aktuellen Codepunkts als Ganzzahl und den Codepunkt selbst als Rune. Dieses Verhalten ist in der Spezifikation der Programmiersprache Go spezifiziert.
Wenn Sie gezielt über einzelne Bytes einer Zeichenfolge iterieren möchten, können Sie eine reguläre for-Schleife mit einem ganzzahligen Index verwenden oder die Zeichenfolge in ein Byte-Slice konvertieren ( []byte) unter Verwendung der []byte(s)-Konvertierung.
Zusammenfassend lässt sich sagen, dass der Bereich über Zeichenfolgen in Go Unicode-Codepunkte (Rune-Typ) zurückgibt, während der Zugriff auf einzelne Zeichen über den Index einzelne Bytes zurückgibt. Diese Unterscheidung basiert auf der Definition des String-Datentyps und dem Verhalten der Bereichsklausel für Strings. Das Verständnis dieses Unterschieds ist für die effiziente Bearbeitung von String-Daten in Go von entscheidender Bedeutung.
Das obige ist der detaillierte Inhalt vonGo Strings: Rune vs. Byte: Was ist der Unterschied zwischen Rangierung und Indizierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!