You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 02:12:37