Sobes.tech
Junior — Middle

Wel resultaat geeft de ingebouwde functie len bij het aanroepen op een string?

sobes.tech AI

Antwoord van AI

In Go geeft de ingebouwde functie len wanneer deze wordt aangeroepen op een string, het aantal bytes in die string terug, niet het aantal tekens (runes).

Dit komt doordat strings in Go sequenties van bytes zijn die in UTF-8 codering zijn. Als de string alleen ASCII-tekens bevat, is het aantal bytes gelijk aan het aantal tekens. Maar als de string multibyte-tekens bevat (bijvoorbeeld Cyrillisch, emoji), dan geeft len de som van de bytes terug, niet het aantal tekens.

Voorbeeld:

s := "Привет"
fmt.Println(len(s)) // Toont het aantal bytes, bijvoorbeeld 12

runes := []rune(s)
fmt.Println(len(runes)) // Toont het aantal tekens, bijvoorbeeld 6

Als je het aantal tekens (runes) wilt krijgen, moet je de string converteren naar een slice van runes en de lengte ervan nemen.