Warum Bereich über String Runen zurückgibt, Byte für Index
Laut der Go-Dokumentation und unseren eigenen Tests, wenn der Bereich über einen String geht, Die erhaltenen Elemente sind vom Typ Rune, wohingegen die Indizierung in die Zeichenfolge mithilfe von str[index] Bytes ergibt.
Die Der Hauptgrund für diese Unterscheidung liegt in der Definition des String-Typs. Ein String stellt eine Folge von Bytes dar, und der Zugriff auf einzelne Bytes ist durch Indizierung möglich.
Andererseits wird die Range-Klausel in for verwendet Anweisung. Sie ermöglicht das Durchlaufen von Unicode-Codepunkten in einer Zeichenfolge. Beginnend mit dem 0-Byte-Index gibt die Iteration den ersten Byte-Index jedes UTF-8-codierten Codepunkts und den entsprechenden Codepunktwert (Rune-Typ) zurück.
Wenn Sie über die Bytes in der Zeichenfolge anstelle von Codepunkten iterieren möchten, gibt es einige Optionen:
Diese Alternativen bieten direkten Zugriff auf Bytes, ohne die Lesbarkeit des Codes zu beeinträchtigen.
Das obige ist der detaillierte Inhalt vonWarum gibt der Bereich über einen String in Go Runen zurück, während die Indizierung Bytes zurückgibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!