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

Go语言Redis订阅返回[]uint8类型如何转换为字符串输出?

问题解决方法

你猜测的方向是对的,[]uint8就是Go中[]byte类型的别名,redigo库返回的redis.Message.Data字段本身就是[]byte类型,直接做类型转换即可得到字符串格式的消息内容。

修改方案

把代码中的对应行:

fmt.Println("Output: ", v.Data, reflect.TypeOf(v.Data))

修改为如下任意一种即可得到预期输出:

  • 显式转换为字符串后打印(保留原有类型输出的需求):
fmt.Println("Output: ", string(v.Data), reflect.TypeOf(v.Data))
  • 用格式化打印更便捷(%s占位符天然支持[]byte类型转字符串输出):
fmt.Printf("Output: %s 数据类型: %T\n", v.Data, v.Data)

原输出异常原因

之前直接打印v.Data得到的是数字数组,是因为fmt.Println处理[]byte类型变量时,默认会按字节切片的规则输出每个元素的十进制ASCII值,你看到的[116 101 115 116 45 109 101 115 115 97 103 101]正好就是字符串test-message每个字符对应的ASCII编码值。


内容的提问来源于stack exchange,提问作者Ling Guo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:39:00