Basic Slice Types基本Slice类型

 

Slice提供了一些内置的基本类型,如下所示,括号中的数字表示指数:



类型取值范围大小
boolfalse / 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
floatIEEE single标准>=32bits
doubleIEEE 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类型都会在传递过程中会被改变表达形式。