golang中为何类型rune是int32的别名,而不是uint32

soooldier · · 2773 次点击
utf-8有的是4个字节,所以rune就不可能是 int16呀
#3
更多评论
看来这是个很有争议的问题啊,估计即使汤普逊本人,也有可能是自圆其说的多面解释,也就是就是这么设计的呗。 不过rune确实可以赋负值,完全当作int32来做运算。 同样的问题还有byte为什么是uint8,而不是int8; rune为什么是int32,不是int16
#1
byte为什么是uint8个人感觉比较好解释,int8表示不了127以上的值;rune为什么是int32,因为int16的取值覆盖不了unicode的编码范围。
#2