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

Golang中switch i.(type)判断结果与reflect.TypeOf返回类型不一致问题

Go类型判断结果不一致原因说明
  • byte与uint8是等价类型:Go语言预声明了byte作为uint8的类型别名,底层实现完全一致,仅为不同使用场景下的不同名称,对应的切片类型[]byte和[]uint8本质是完全相同的类型。
  • reflect.TypeOf输出[]uint8的原因:reflect包输出类型名时,默认展示类型的原生定义名称,因此会显示底层原始类型[]uint8,而非别名写法[]byte。
  • type switch匹配[]byte分支的原因:类型断言与type switch的匹配逻辑可识别等价别名类型,由于[]byte和[]uint8完全等价,因此[]uint8类型的变量可以正常匹配[]byte的分支。

你可以自行验证:将type switch的分支替换为case []uint8,代码运行逻辑完全一致,同样会匹配成功输出对应内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:48:02