为何Go语言取字符串首元素得到ASCII值84而非字符T?
Go字符串索引输出ASCII值而非字符的原因及解决方法
在Go语言中,字符串本质是UTF-8编码的字节序列。当你通过book[0]这种索引方式访问字符串元素时,得到的是对应位置的单个byte类型值(byte等价于uint8)。对于ASCII字符来说,每个字符刚好占用1个字节,所以'T'对应的字节值就是它的ASCII码84,fmt.Println会直接输出这个数值。
要输出字符本身,有两种常用方案:
- 将字节转换为字符串后再打印:
package main import ( "fmt" ) func main() { book := "The_colour_of_magic" fmt.Println(string(book[0])) // 输出T }
- 如果需要处理包含多字节字符的字符串(比如中文、特殊符号),更稳妥的方式是先将字符串转换为
rune切片,再访问对应的字符,这样能确保拿到完整的字符单元:
package main import ( "fmt" ) func main() { book := "The_colour_of_magic" runes := []rune(book) fmt.Println(string(runes[0])) // 输出T }
内容的提问来源于stack exchange,提问作者Ashish Arya
相关产品推荐
相关产品推荐

