rust學習(六)控制流
學習完了函數,接下來學習控制流。rust的控制流包括if、else-if、else。循環語句包括loop、while、for等
老樣子,我們利用caogo新建一個項目
cargo new branchescd branches
if
如果我們學習過其他編程語言,if的判斷條件可以是bool類型,也可以是一個邏輯表達式。但在rust中if后面只能跟bool值,rust不會將非布爾值轉換為布爾值。
fn main(){
// if表達式
let x: u8 = 15;
if x < 18 {
println!("The legal of age is 18!");
}
}
else-if else
如果我們對某一個值有有限個判斷條件,我們可以通過else-if判斷其他條件,并通過給出一個else來對當前面其他判斷條件都不滿足時,給出其他處理邏輯。
fn main(){
// if else-if else
let number = 6;
if number % 4 == 0 {
println!("number is divisible by 4");
} else if number % 3 == 0 {
println!("number is divisible by 3");
} else if number % 2 == 0 {
println!("number is divisible by 2");
} else {
println!("number is not divisible by 4, 3, or 2");
}
}
我們還可以將if與let結合使用,因為if是一個表達式,所以我們可以在let的右邊使用它。
此外if的每個分支的可能返回值都必須是相同類型,這是rust規定的~~~
fn main(){
// let與if搭配使用
// if 的每個分支的可能的返回值都必須是相同類型
let condition = true;
let num = if condition { 5 } else { 6 };
println!("The value of num is: {}", num);
}
循環
如果我們想要某一段代碼根據我們的約定執行多少次,我們就需要依靠循環這個工具來實現。
在其他編程語言當中,如果我們想要編寫一個死循環,通常使用while(1) while(true)等等形式。在rust當中如果可以借助loop關鍵字來實現。
// 這段代碼會一直執行,直到我們手動終止
loop{
}
和其他語言類似,如果我們想要從loop中獲得返回值我們可以通過break和continue關鍵字來幫助我們完成此需求。
不同的是break會跳出當前循環;而continue會跳過當前循環,執行下一次循環(嵌套循環時會用到)。
示例代碼:
// loop循環
let mut count: u8 = 0;
let result: u8 = loop {
count += 1;
if count == 10 {
break count * 2; // 使用break關鍵字跳出循環
}
};
println!("The result is {}", result); // 20
多層循環嵌套時,我們可能需要通過一個標簽名來幫助我們跳出循環。
rust的循環標簽名定義形式我覺得很怪異。。。。hh
定義形式:'label_name:loop{} 跳出時通過break 'label_name
// 循環嵌套,通過循環標簽消除多個循環間的歧義
let mut cc_count: u8 = 0;
// 指定一個 循環標簽
'counting_up: loop {
println!("cc_count = {cc_count}");
let mut remaining: u8 = 10;
loop {
println!("remaining = {remaining}");
if remaining == 9 {
break;
}
if cc_count == 2 {
break 'counting_up; // 通過指定標簽名跳出最外層循環
}
remaining -= 1;
}
cc_count += 1;
}
println!("End cc_count = {cc_count}");
while
while循環很方便,我們經常會使用到它。當滿足某個條件時,while循環會一直執行下去,直到不滿足該條件才會調用break退出循環。有時while循環的代碼和使用for循環編寫的代碼類似,我們常根據實際情況使用某種形式。
語法:while bool {// execute something}
示例代碼:
// while循環
// 當條件為true,執行循環;當條件為false,調用break中止循環
let mut dd_count: u8 = 5;
while dd_count != 0{
println!("dd_count = {dd_count}");
dd_count-=1;
}
println!("dd_count is LIFTOFF!!!");
for
for循環是我們最常用的循環形式之一,它在每個編程語言當中都非常常見。
rust中通過for in的方式來實現循環遍歷。for循環還包括迭代器,后續學到時再做闡述...
示例代碼:
// for in循環
// 通過for循環遍歷輸出數組元素
let arr_data:[u8;5] = [1, 2, 3, 4, 5];
for item in arr_data{
print!("{} ", item);
}
println!();
// 利用for循環實現倒計時
for range_i in (1..10).rev() {
println!("{range_i}!");
}
println!("LIFTOFF!!!");
這里只是簡要說明了loop、while、for的簡單使用,如果想要更多例子可以參考rust官方的例子或者上網搜索更多....
官網例子:https://doc.rust-lang.org/rust-by-example/flow_control/for.html

浙公網安備 33010602011771號