为什么 rune 是 Go 中 int32 的别名,而不是 uint32?
尽管 rune 类型的主要目的是表示字符值,但 rune 类型Go 中没有定义为 uint32 的别名。相反,它是 int32 的别名。鉴于字符通常由正值表示,此选择似乎违反直觉。
此决定背后的基本原理源于符文作为 Unicode 代码点占位符的作用,该占位符超出了 ASCII 字符的范围。 Unicode 代码点可以是正数或负数,并且使用 int32 允许 Go 程序员在涉及符文的算术运算期间检测潜在的溢出或错误。
另一方面,Uint32 是一种无符号整数类型,只能保存正数价值观。这将阻止检测负符文值,这可能会导致依赖于识别溢出情况的代码出现细微错误。
相反,字节类型(uint8 的别名)专门用于表示 ASCII 字符。由于 ASCII 字符始终为正数,因此使用无符号整数类型作为字节是合适的。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3