結構體
與 C 和 C++ 一樣,Rust 支援自訂結構體:
struct Person { name: String, age: u8, } fn main() { let mut peter = Person { name: String::from("Peter"), age: 27, }; println!("{} is {} years old", peter.name, peter.age); peter.age = 28; println!("{} is {} years old", peter.name, peter.age); let jackie = Person { name: String::from("Jackie"), ..peter }; println!("{} is {} years old", jackie.name, jackie.age); }
重點:
- 結構體的運作方式與在 C 或 C++ 中類似。
- 不需要 typedef 即可定義型別。這與 C++ 類似,但與 C 不同。
- 與 C++ 不同的是,結構體之間沒有繼承關係。
- 方法會在
impl
區塊中定義,我們將於接下來的投影片說明這點。 - 不妨趁此機會讓學員瞭解還有幾種不同的結構體。
- 針對某些型別實作特徵時,可能會使用大小為零的結構體
e.g., struct Foo;
,但其中沒有任何需要儲存在值本身的資料。 - 在下一張投影片中,我們會介紹元組結構體,可於欄位名稱不重要時使用。
- 針對某些型別實作特徵時,可能會使用大小為零的結構體
..peter
語法可讓我們從舊的結構體中複製大部分欄位,而不必明確輸入所有欄位。此元素一律須位於最後。