Array類型
Rust中的數組和其他語言中的數組不太一樣,Rust數組長度固定、元素類型相同。
數組的數據類型表示方式為[Type; N]
,其中:
- Type是該數組要存儲什麼類型的數據,數組中的所有元素類型都必須是Type
- N是數組的長度,Rust不會自動伸縮數組的長度
數組字面量使用中括號[]
表示,例如[1,2,3]
。還有一種特殊的表示數組字面量的方式是[val; N]
,這有點像數組類型的描述方式[Type; N]
,不過這裡表示的是該數組長度為N,並且這N個元素的值都初始化為val。
例如:
fn main(){ // 自動推導類型為:[i32; 4] let _arr = [11,22,33,44]; let _arr1: [&str; 3] = ["junma", "jinlong", "gaoxiao"]; // 自動推導類型為:[u8; 1024] // 該數組初始化為1024個u8類型的0 // 可將之當作以0填充的1K的buf空間 let _arr2 = [0_u8; 1024]; }
注意,[Type; N]
是用來描述數據類型的,所以其中的N必須在編譯期間就能確認,因此N不能是一個變量。
fn main(){ let n = 3; // 編譯錯誤,提示n不是常量值 let _arr1: [&str; n] = ["junma", "jinlong", "gaoxiao"]; }
可以迭代數組,不過不能直接for i in arr{}
,而是for i in &arr{}
或者for i in arr.iter(){}
。例如:
fn main(){ let arr = [11,22,33,44]; for i in arr.iter() { println!("{}", i); } }
數組有很多方法可以使用,例如len()
方法可以獲取數組的長度。
fn main(){ let arr = [11,22,33,44]; println!("{}", arr.len()); // 4 }
實際上,數組的方法都來自Slice類型。Slice類型後面會詳細介紹。