Range over a string gives you runes, not bytes:
for i, r := range "Go!" {
fmt.Printf("%d: %c\n", i, r)
}
This prints each character with its byte position. For ASCII strings, index matches character position. For Unicode, indices may skip values because some characters use multiple bytes.