iT邦幫忙

2023 iThome 鐵人賽

DAY 7
2

也有英文版文章
Also this tutorial has been written in English
Check out my Medium

Rust的中文翻譯以參考這份檔案為主.


目錄

  • 結構體(Struct)

結構體(Struct)

結構體(Struct)和枚舉(Enum)是兩個不可分割的存在,今天先來介紹結構體(Struct)。

Struct

" Where structs give you a way of grouping together related fields and data, like a Rectangle with its width and height, enums give you a way of saying a value is one of a possible set of values. "- Book of The Rust Programming Language

  • 結構體(Struct)給予你一個方法,將檔案和相關領域團結組織起來,就像長方形有長和寬。
  • 枚舉(Enum)給予你一個方法,去說明一個值只是所有可能的值中的其中之一。

Example 01 - 座標宣告

與其分開宣告變數

let origin_x = 0;
let origin_y = 0;

不如直接定義一個struct來的明白簡潔

struct Point {
    x: i32,
    y: i32,
}

fn main() {
    let origin = Point { x: 0, y: 0 }; // origin: Point

    println!("The origin is at ({}, {})", origin.x, origin.y);
}

  • 結構體 struct 是一種建立更複雜資料型別的方法
  • 包含了複數種資料(Contains multiple pieces of data)
  • 每種資料都稱呼為"領域"(field),或"部分"
  • 每個領域(field)可以是不同的型別
  • 跟 Rust 中的其他綁定一樣,struct 中的值預設是不可變的。
  • 可以使用 mut 讓它成為可變的

Example 02 - 調飲時間

1.

宣告飲料的struct

struct Drink {
    fluid_oz: f64,
}

2.

建一個函式來output

fn print_drinks(the_drink: Drink) {

    println!("Oz: {:?}", the_drink.fluid_oz);
}

3.

來到main(),我們設定了飲料的重量,最後呼叫輸出結果的函式

fn main() {
    let a: Drink = Drink {
        fluid_oz: 10.5,
    };
    print_drinks(a);
}

完整程式碼

struct Drink {
    fluid_oz: f64,
}

fn print_drinks(the_drink: Drink) {

    println!("Oz: {:?}", the_drink.fluid_oz);
}

fn main() {
    let a: Drink = Drink {
        fluid_oz: 10.5,
    };
    print_drinks(a);
}

/*
輸出結果
Oz: 10.5
*/

參考資料 Reference

Nice 教學影片


上一篇
Day 06 - Match 表達式(Expression) & 基礎算數(Basic Arithmetic)
下一篇
Day 08 - 枚舉(Enum) & 元組(Tuples)
系列文
Let's go Rusty. 從0開始了解Rust.15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言