Indexing a string gives you a byte, not a character:
s := "Hello"
fmt.Println(s[0]) // 72 (byte value of 'H')
fmt.Printf("%c\n", s[0]) // H (as character)
For ASCII strings, one byte equals one character. For Unicode strings, this breaks down. A single character might span multiple bytes. Use runes when you need to work with individual characters.