Slice提供了一些内置的基本类型,如下所示,括号中的数字表示指数:
类型 | 取值范围 | 大小 |
---|---|---|
bool | false / true | 没指定 |
byte | -128 to 127(0 - 255) | >=8bits |
short | -2(15) to 2(15) - 1 | >=16bits |
int | -2(31) to 2(31) - 1 | >=32bits |
long | -2(63) to 2(63) - 1 | >=64bits |
float | IEEE single标准 | >=32bits |
double | IEEE double标准 | >=64bits |
string | 所有的Unicode字符, 除了所有位为0的字符 | 变长 |
其中的byte类型的最大取值范围根据实际的语言决定。
当数据类型在服务器和客户端之间传递时,除了byte类型之外的数据类型都根据实际情况在变化。例如:一个long类型的值在从一台little-endian机器传递到bit-endian机器时会发生位变换。类似的,string在从EBCDIC发往ASCII时也是发生ibanhua的,也许string的字符的尺寸也发生了变化,因为不是所有的机器都使用8位的字符。实际上,这些变化对于程序员来说都是透明的,而且会严格按照需要来变化。
整数类形(integer types)
Slice提供了如下的整数类型:
- short,16位
- int,32位
- long,64位
不过,这些类型在某些机器上会映射到更宽的原生类型。需要注意的是那些无符号类型Slice并没有提供。因为无符号类型影射到那些没有原生的无符号类型的语言相当困难,例如Java。
浮点数类型(floating-point types)
浮点数类型遵循IEEE的规范。如果一个实现语言么有支持IEEE的浮点数格式,Ice运行时会将浮点数值转换为原生浮点数表示。
字符串(strings)
Slice字符串使用Unicode字符集。唯一的不能出现在字符串中的字符就是零字符。
Slice没有null字符串的概念。这是因为null字符串很难映射到不直接支持null字符串概念的语言上,例如Python。不要设计依靠一个null字符串来表示“不在那里”的语义的接口。如果你需要表示可选的串,可以通过使用类,字符串的序列,或者一个空的字符串来表示null字符串。
布尔类型(booleans)
布尔类型的值只能由false和true。如果语言映射时有原生布尔类型,语言映射就会使用该类型。
Byte类型(bytes)
Slice定义byte是一个至少8位的,在地址空间中传递时保证不会发生变化的类型。保证不发生变化就允许交换二进制数据,而这些数据不会被篆改。其他的Slice类型都会在传递过程中会被改变表达形式。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步