Sobes.tech
Junior — Middle

Welches Ergebnis gibt die eingebaute Funktion len bei einem Aufruf an einer Zeichenkette zurück?

sobes.tech KI

Antwort von AI

In Go gibt die eingebaute Funktion len, wenn sie auf eine Zeichenkette angewendet wird, die Anzahl der Bytes in dieser Zeichenkette zurück, nicht die Anzahl der Zeichen (Runen).

Dies liegt daran, dass Zeichenketten in Go Sequenzen von Bytes in UTF-8-Codierung sind. Wenn die Zeichenkette nur ASCII-Zeichen enthält, ist die Anzahl der Bytes gleich der Anzahl der Zeichen. Wenn die Zeichenkette jedoch mehrbyte-Zeichen (z.B. kyrillische Buchstaben, Emojis) enthält, gibt len die Summe der Bytes zurück, nicht die Anzahl der Zeichen.

Beispiel:

s := "Привет"
fmt.Println(len(s)) // Gibt die Anzahl der Bytes aus, z.B. 12

runes := []rune(s)
fmt.Println(len(runes)) // Gibt die Anzahl der Zeichen aus, z.B. 6

Wenn Sie die Anzahl der Zeichen (Runen) erhalten möchten, sollten Sie die Zeichenkette in ein Slice von Runen umwandeln und dessen Länge nehmen.