17. 类型转换:整数,浮点数与字符串
调用内置方法时,会对变量类型进行检查,并会对参数进行隐式类型转换,转换优先级是byte<int<float。
显示类型转换是通过伪函数实现,yak内置了一些伪函数,包括int、bool、float、byte、string、var,可以通过这样int(true)这种方式实现类型的转换,值得一提的是,这些方法支持对字符串变量的解析。
// 强制转换可简单通过 type(...) 直接转换a = "123"aInt = int(a)/* aInt 为 (int) 123*/
#
具体类型转换方案如下:原类型\目标类型 | int | bool | float | byte | string | var |
---|---|---|---|---|---|---|
int | - | 非0为真 | 直接转,无信息丢失 | 可能会有信息丢失 | 等同于 sprintf("%d",num) | - |
bool | 真为1,假为0 | - | 真为1,假为0 | 真为1,假为0 | "true"和"false" | - |
float | 只保留整数部分 | 非0为真 | - | 只保留整数部分 | 等同于 sprintf("%f",num) | - |
byte | 直接转,无信息丢失 | 非0为真 | 直接转,无信息丢失 | - | 等同于 sprintf("%d",num) | - |
string | 解析字符串内的数据,失败则会panic | 同左 | 同左 | 同左 | - | - |
var | var类型变量可以储存任意类型数据,可以通过强制类型转换转回原类型 | 同左 | 同左 | 同左 | 同左 | - |