复合类型
复合类型可以将多个值组合成一个类型。Rust有两个原生的复合类型:元组(tuple)和数组(array)。
元组
元组是一个将多个其他类型的值组合进一个复合类型的主要方式。元组长度固定:一旦声明,其长度不会增大或缩小。 我们使用包含在圆括号中的逗号分隔的值列表来创建一个元组。元组中的每一个位置都有一个类型,而且这些不同值的类型也不必是相同的。
fn main() {
let tup: (i32, f64, bool) = (1, 2.2, true); //使用了类型注解 显式的声明每个值对应的类型
let tup1 = (2.2, 3, false); //如果不使用类型注解,则会使用默认的类型 (f64,i32,bool)
println!("tup is {:?}, tup1 is {:?}", tup, tup1);
}
如何获取元组里的值
fn main() {
let tup = (1, 2, 3);
let (x, y, z) = tup; //解构 将元组分成三个不同的变量
println!("x is {}", x);
//还可以通过`.`后面跟值的索引来访问它们
//元组的第一个元素索引是0
let tup = (0, 1, 2);
let x = tup.0;
let y = tup.1;
let z = tup.2;
println!("x is {}, y is {}, z is {}", x, y, z);
}
数组
数组中也包含多个值,不过里面值的类型必须统一,不可以是多个类型,一旦声明,它的长度和类型也是不可以改变的。
fn main() {
let arr = [0,1,2,3,4,5];
println!("arr is {:?}", arr);
//通过索引获取指定值 索引从0开始
let a = arr[0];
println!("a is {}", a);
let x: [i32;5] = [1,2,3,4,5]; //数组里面元素都是i32类型,并且长度为5
let y = [1;5]; //数组里面所有元素都为1,长度为5
println!("x is {:?}, y is {:?}", x, y);
}