運算子 控制語句

2021-10-12 08:35:20 字數 3098 閱讀 6930

3.運算子、控制語句

3.1 運算子

假定 a 值為 10,b 值為 20。

3.1.1 算數運算子

運算子 描述 例項

檢查左邊值是否大於右邊值,如果是返回 true 否則返回 false。

< 檢查左邊值是否小於右邊值,如果是返回 true 否則返回 false。

= 檢查左邊值是否大於等於右邊值,如果是返回 true 否則返回 false。

<= 檢查左邊值是否小於等於右邊值,如果是返回 true 否則返回 false。

3.1.3 邏輯運算子

運算子 描述

&& 邏輯 and 運算子。 如果兩邊的運算元都是 true,則條件 true,否則為 false。

| | 邏輯 or 運算子。 如果兩邊的運算元有乙個 true,則條件 true,否則為 false。

! 邏輯 not 運算子。 如果條件為 true,則邏輯 not 條件 false,否則為 true。

3.1.4 位運算子,假定 a 為60,b 為13

運算子 描述

& 按位與運算子"&「是雙目運算子。 其功能是參與運算的兩數各對應的二進位相與。

| 按位或運算子」|「是雙目運算子。 其功能是參與運算的兩數各對應的二進位相或

^ 按位異或運算子」^「是雙目運算子。 其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。

<< 左移運算子」<<「是雙目運算子。左移n位就是乘以2的n次方。 其功能把」<<「左邊的運算數的各二進位全部左移若干位,由」<<"右邊的數指定移動的位數,高位丟棄,低位補0。

右移運算子">>「是雙目運算子。右移n位就是除以2的n次方。 其功能是把」>>「左邊的運算數的各二進位全部右移若干位,」>>"右邊的數指定移動的位數。

3.1.5 賦值運算子

運算子 描述 例項

= 簡單的賦值運算子,將乙個表示式的值賦給乙個左值 c = a + b 將 a + b 表示式結果賦值給 c

+= 相加後再賦值 c += a 等於 c = c + a

-= 相減後再賦值 c -= a 等於 c = c - a

*= 相乘後再賦值 c *= a 等於 c = c * a

/= 相除後再賦值 c /= a 等於 c = c / a

%= 求餘後再賦值 c %= a 等於 c = c % a

<<= 左移後賦值 c <<= 2 等於 c = c << 2

= 右移後賦值 c >>= 2 等於 c = c >> 2

&= 按位與後賦值 c &= 2 等於 c = c & 2

^= 按位異或後賦值 c ^= 2 等於 c = c ^ 2

= 按位或後賦值 c

3.1.6 其他運算子

運算子 描述 例項

& 返回變數儲存位址 &a; 將給出變數的實際位址。

3.2.1.1 if語句

if 語句 由乙個布林表示式後緊跟乙個或多個語句組成。

if 語句 後可以使用可選的 else 語句, else 語句中的表示式在布林表示式為 false 時執行。

if 或 else if 語句中可嵌入乙個或多個 if 或 else if 語句。

同各類主流語言,不多贅述。但注意,go 沒有三目運算子,所以不支援 ?: 形式的條件判斷

3.2.1.2 switch語句

用於基於不同條件執行不同動作,每乙個 case 分支都是唯一的,從上至下逐一測試,直到匹配為止。

匹配項後面不需要再加 break。

switch 預設情況下 case 最後自帶 break 語句,匹配成功後就不會執行其他 case,如果我們需要執行後面的 case,可以使用 fallthrough 。

fallthrough:強制執行後面的 case 語句,fallthrough 不會判斷下一條 case 的表示式結果是否為 true

switch x.(type)

解釋:從第乙個判斷表示式為 true 的 case 開始執行,如果 case 帶有 fallthrough,程式會繼續執行下一條 case,且它不會去判斷下乙個 case 的表示式是否為 true。

支援多條件匹配

不同的 case 之間不使用 break 分隔,預設只會執行乙個 case

如果想要執行多個 case,需要使用 fallthrough 關鍵字,也可用 break 終止

3.2.1.3 select語句

select

每個 case 都必須是乙個通訊

所有 channel 表示式都會被求值

所有被傳送的表示式都會被求值

如果任意某個通訊可以進行,它就執行,其他被忽略。

如果有多個 case 都可以執行,select 會隨機公平地選出乙個執行。其他不會執行。 否則:

如果有 default 子句,則執行該語句。

如果沒有 default 子句,select 將阻塞,直到某個通訊可以執行;go 不會重新對 channel 或值進行求值。

3.2.3 迴圈語句

3.2.3.1 for迴圈

for init; condition; post //for

for condition //while

for {}

init: 一般為賦值表示式,給控制變數賦初值;

condition: 關係表示式或邏輯表示式,迴圈控制條件;

post: 一般為賦值表示式,給控制變數增量或減量。

for 迴圈的 range 格式可以對 slice、map、陣列、字串等進行迭代迴圈:

for key, value := range oldmap

statement(s);

}3.2.3.2 迴圈控制語句

break語句:

用於迴圈語句中跳出迴圈,並開始執行迴圈之後的語句。

break 在 switch(開關語句)中在執行一條 case 後跳出語句的作用。

在多重迴圈中,可以用標號 label 標出想 break 的迴圈。

continue語句:跳過當前迴圈的剩餘語句,然後繼續進行下一輪迴圈。

goto:無條件轉移到過程中指定行,與條件語句配合,實現條件轉移、構成迴圈、跳出迴圈體等(不建議用,造成混亂)

Go 運算子 控制語句

算數運算子 加減乘除 取餘 自增 自減 關係運算子 邏輯運算子 位運算子 賦值運算子 運算子描述 簡單的賦值運算子,將乙個表示式的值賦給乙個左值 相加後再賦值 相減後再賦值 相乘後再賦值 相除後再賦值 求餘後再賦值 左移後賦值 右移後賦值 按位與後賦值 按位異或後賦值 優先順序 2.1條件語句 2....

Go 運算子 控制語句

假定 a 值為 10,b 值為 20。3.1.1 算數運算子 運算子描述例項 相加a b 輸出結果 30 相減 a b 輸出結果 10 相乘 a b 輸出結果 200 相除 b a 輸出結果 2 求餘 b a 輸出結果 0 自增 a 輸出結果 11 自減 a 輸出結果 9 3.1.2 關係運算子 運...

運算子與條件控制語句

算術運算子 比較運算子 賦值運算子 邏輯運算子 and與 or或 not非 and全部條件為真才為真 or有乙個條件為真就為真 not全部為假返回真 num 100 num2 100 print id num print id num2 成員運算子 in,not in 返回true或false 測試...