大部分静态编译的语言都提供了类型支持,不同的类型分配不同大小的内存空间,当程序执行的时候,会根据熟悉类型去解析数据,譬如rust 里面的i32 代表32位的整形,在内存里面占用四个字节。下面介绍一下 rust 里面常用的类型
bool 类型比较简单,这个和java 以及 go 等其他语言的一样
let x = true;
let y: bool = !x;
let z = x && y;
println!("{}", z);
let z = x || y;
println!("{}", z);
除了本身 true 和false以外,还支持 &&(与) 和 ||(或)操作。
rust的char 比较特殊,rust 统一采用Unicode编码,每一个char 都是一个Unicode字符,占用四个字节。
let c1 = '
';
let c2 = '';
let c3 = 'u{7FF0}';
一个char 就可以代表一个汉字。如果需要节省空间,使用ASCII 码方式存储可以
let y :u8 = b'A';
let s :&[u8;5] = b"hello";
整数可以分为 8位、16位、32位、64位、128位整形,每种整形有可以分为有符号和无符号两种,比如常用的32位整形可以分为:i32 和 u32 分别代表32位有符号 和 无符号 整形。rust 支持类型推导譬如下面的代码,var1 会被推导成 i32类型
let var1 = 32;
但你也只可以指定类型,常用的方式有两种,如下
let var1 :i16 = 32; //直接指定类型
let var1 = 32i16; //通过后缀指定
浮点和整数使用是类似。
let f1 = 123.0f64;
let f2 = 0.1f64;
let f3 = 0.1f32;
这里补充一点,就是类型转换,rust里面经常会看到通过 as 的方式进行类型转换,如下将i8 类型转换为 i16,由于 i16 比 i8 容量大,转换是安全的。
let var1 : i8 = 41;
let var2 : i16 = var1 as i16;
第一次接触元组类型是在Python,rust 里面也支持元组类型,元组就是用括号把不同的类型组合起来。比如下面 a 就是一个元组类型
let a = (1i32, false);
其实go 的返回值也可以认为是一种元组,只不过go 没有明确这个类型。元组之中还可以嵌套元组
let b = ("a", (1i32, 2i32));
无论是c/c++ 还是go 都支持结构体。如下定义了一个坐标点,有两个属性分别是 x 和 y 。
struct Point {
x: i32,
y: i32,
}
后续我们就可以对结构体实例化,创建一个结构体”实例“。
fn main() {
let p = Point { x: 0, y: 0};
println!("Point is at {} {}", p.x, p.y);
}
这个和其他语言也没有啥区别。我们还可以给结构体添加方法,这个后面再说。
它是元组和结构体的杂交。定义像结构体,但大括号改成了小括号,属性都是匿名。
struct Color(i32, i32, i32);
struct Point(i32, i32, i32);
后续也可以实例化使用
fn main() {
let p = Point( 1, 2, 3);
println!("Point is at {} {} {}", p.0, p.1,p.2);
}
rust 枚举也没有什么特殊的,只不过类型定义不是通过 ”:“ 改成了小括号
enum Number {
Int(i32),
Float(f32),
}
枚举主要用于match 分支判断,匹配对应的类型。
fn read_num(num: Number) {
match num {
Number::Int(value) =>
println!("Integer {}", value),
Number::Float(value) =>
println!("Float {}", value),
}
}
fn main() {
let n: Number = Number::Int(1);
read_num(n);
}
数组主要是保存一组相同类型的数据集合,可以通过如下两种方式
let arr: [i32; 3] = [1, 2, 3]; //指定数组元素类型是i32,长度为3
let init_arr = [0; 10]; //初始化长度为10,每个元素都为0
我们还可以从数组中生成切片,go里面是通过”:“切割,而rust 是通过 ”..“,比如
&arr[1..] //[2, 3]
总结一下,rust 里面除了 元组结构体以外,和其他编程语言相比,并没有引入新概念。到这里还是比较容易学习的。
页面更新:2024-06-08
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号