Task 4 運算子、控制語句
阿新 • • 發佈:2020-12-18
Task 4 運算子、控制語句
運算子
算術運算子和關係運算符與其他語言通用 這裡總結一下邏輯運算子(主要是怕記不住)
運算子 描述
&& 邏輯 AND 運算子。 如果兩邊的運算元都是 True,則條件 True,否則為 False。
| | 邏輯 OR 運算子。 如果兩邊的運算元有一個 True,則條件 True,否則為 False。
! 邏輯 NOT 運算子。 如果條件為 True,則邏輯 NOT 條件 False,否則為 True。
運算子 | 描述 |
---|---|
&& | 邏輯 AND 運算子。 如果兩邊的運算元都是 True,則條件 True,否則為 False。 |
\\ | 邏輯 OR 運算子。 如果兩邊的運算元有一個 True,則條件 True,否則為 False。 |
! | 邏輯 NOT 運算子。 如果條件為 True,則邏輯 NOT 條件 False,否則為 True。 |
優先順序
條件語句
參考datawhale的教程
if語句
- if 語句 由一個布林表示式後緊跟一個或多個語句組成。
- if 語句 後可以使用可選的 else 語句, else語句中的表示式在布林表示式為 false 時執行。
- if 或 else if 語句中可嵌入一個或多個 if 或 else if 語句。
- 同各類主流語言,不多贅述。但注意,Go 沒有三目運算子,所以不支援 ?: 形式的條件判斷
switch語句
- 用於基於不同條件執行不同動作,每一個 case 分支都是唯一的,從上至下逐一測試,直到匹配為止。
- 匹配項後面不需要再加 break。
- witch 預設情況下 case 最後自帶 break 語句,匹配成功後就不會執行其他 case,如果我們需要執行後面的case,可以使用 fallthrough 。
- fallthrough:強制執行後面的 case語句,fallthrough 不會判斷下一條 case 的表示式結果是否為 true
switch x.(type){
case type:
statement (s);
case type:
statement(s);
default: // 可選
statement(s);
}
解釋:從第一個判斷表示式為 true 的 case 開始執行,如果 case 帶有 fallthrough,程式會繼續執行下一條 case,且它不會去判斷下一個 case 的表示式是否為 true。
- 支援多條件匹配
- 不同的 case 之間不使用 break 分隔,預設只會執行一個 case
- 如果想要執行多個 case,需要使用fallthrough 關鍵字,也可用 break 終止
select語句
select {
case communication clause :
statement(s);
case communication clause :
statement(s);
default : // 可選
statement(s);
}
- 每個 case 都必須是一個通訊
- 所有 channel 表示式都會被求值
- 所有被髮送的表示式都會被求值
- 如果任意某個通訊可以進行,它就執行,其他被忽略。
- 如果有多個 case 都可以執行,Select 會隨機公平地選出一個執行。其他不會執行。 否則:
- 如果有 default 子句,則執行該語句。
- 如果沒有 default 子句,select 將阻塞,直到某個通訊可以執行;Go 不會重新對 channel 或值進行求值。
迴圈語句
for迴圈
for init; condition; post { } //for
for condition { } //while
for {}
init: 一般為賦值表示式,給控制變數賦初值;
condition: 關係表示式或邏輯表示式,迴圈控制條件;
post: 一般為賦值表示式,給控制變數增量或減量。
for 迴圈的 range 格式可以對 slice、map、陣列、字串等進行迭代迴圈:
for key, value := range oldMap {
newMap[key] = value
迴圈巢狀
格式如下:
for [condition | ( init; condition; increment ) | Range] {
for [condition | ( init; condition; increment ) | Range] {
statement(s);
}
statement(s);
}
迴圈控制語句
break語句:
- 用於迴圈語句中跳出迴圈,並開始執行迴圈之後的語句。
- break 在 switch(開關語句)中在執行一條 case 後跳出語句的作用。
- 在多重迴圈中,可以用標號 label 標出想 break 的迴圈。
continue語句:
跳過當前迴圈的剩餘語句,然後繼續進行下一輪迴圈。
goto語句:
無條件轉移到過程中指定行,與條件語句配合,實現條件轉移、構成迴圈、跳出迴圈體等(不建議用,造成混亂)