8.5 类型系统
基本类型
| 固定位宽类型 | 注解 | 位宽(bit) |
|---|---|---|
| void | 空,一般用于表示无返回值 | — |
| bool | 布尔类型 | 8 |
| flt32 | 32位单精度浮点 | 32 |
| flt64 | 64位双精度浮点 | 32 |
| int8 | 8位有符号整数 | 8 |
| int16 | 8位有符号整数 | 16 |
| int32 | 8位有符号整数 | 32 |
| int64 | 8位有符号整数 | 64 |
| uint8 | 8位无符号整数 | 8 |
| uint16 | 16位无符号整数 | 16 |
| uint32 | 32位无符号整数 | 32 |
| uint64 | 64位无符号整数 | 64 |
| char | 字符 | 8 |
可变位宽类型的位宽由编译的目标CPU架构有关。
| 可变位宽类型 | 注解 | CPU32 | CPU64 |
|---|---|---|---|
| sint | 有符号整数 | 32 | 64 |
| uint | 无符号整数 | 32 | 64 |
| uintptr | 指针 | 32 | 64 |
| cstring | 字符串指针 | 32 | 64 |
枚举类型
枚举定义只能是定义整数类的值,其占用的字节数、有无符号性,通过基类标识指定。
如下所示:
enum Color:uint32{
Red,
Black,
}结构体
结构体在airlang中是值类型,不会进入GC系统,除通过API分配独立的堆内存。
一般用于构成类中的共同属性。
struct Vec2{
int32 x;
int32 y;
}
struct Vec3 :Vec2{
int32 z;
}联合体
union Int32{
int32 i32;
struct{
int8 [4] v4;
}
}接口
interface IEvent{
void eat();
}类
class Parent{
int32 i32;
void doing(){}
}
class Child :Parent <IEvent>{
int64 i64;
void eat()@override{}
}委托
entrust Func = void (int32,int64)@clang;