本文快速介紹了 Go 語言中的各種運算符,從數學計算到邏輯判斷,包括自增自減、賦值、比較和位運算。透過實例和清晰的解釋,快速掌握如何在程式中運用這些運算符。
在 Go 語言中,我們可以使用各種算術運算符來執行基本的數學運算。以下是一些常用的算術運算符:
+
:加法運算,用來將兩個數相加。-
:減法運算,用來從一個數中減去另一個數。*
:乘法運算,用來將兩個數相乘。/
:除法運算,用來將一個數除以另一個數。%
:求餘運算,用來得到兩個數相除的餘數。例如:
a := 5
b := 3
c := a + b // c 的值是 8
d := a * b // d 的值是 15
此外,我們還有自增和自減運算符,它們用來讓變數的值增加或減少 1:
++
:自增運算符,將變數的值增加 1。--
:自減運算符,將變數的值減少 1。舉個例子:
x := 10
x++ // x 的值變成了 11
y := 5
y-- // y 的值變成了 4
賦值運算符用來將一個值賦給一個變數。我們常見的賦值運算符有:
+=
:先將右邊的值加到左邊的變數上,然後再將結果賦給左邊的變數。-=
:先從左邊的變數中減去右邊的值,然後再將結果賦給左邊的變數。*=
:先將左邊的變數乘以右邊的值,然後再將結果賦給左邊的變數。/=
:先將左邊的變數除以右邊的值,然後再將結果賦給左邊的變數。%=
:先將左邊的變數除以右邊的值取餘數,然後再將結果賦給左邊的變數。簡單範例如下:
a := 10
b := 5
a = 20 // a 的值變成了 20
a += b // 等同於 a = a + b,所以 a 的值變成了 25
a -= b // 等同於 a = a - b,所以 a 的值變成了 20
a *= b // 等同於 a = a * b,所以 a 的值變成了 100
a /= b // 等同於 a = a / b,所以 a 的值變成了 20
a %= b // 等同於 a = a % b,所以 a 的值變成了 0
比較運算符用來比較兩個值的大小或者是否相等。我們常用的比較運算符有:
==
:判斷兩個值是否相等。!=
:判斷兩個值是否不相等。<
:判斷左邊的值是否小於右邊的值。>
:判斷左邊的值是否大於右邊的值。<=
:判斷左邊的值是否小於等於右邊的值。>=
:判斷左邊的值是否大於等於右邊的值。以下為使用範例:
x := 10
y := 5
isEqual := x == y // false,因為 x 不等於 y
isNotEqual := x != y // true,因為 x 不等於 y
isLess := x < y // false,因為 x 不小於 y
isGreater := x > y // true,因為 x 大於 y
isLessOrEqual := x <= y // false,因為 x 不小於等於 y
isGreaterOrEqual := x >= y // true,因為 x 大於等於 y
邏輯運算符用來執行邏輯操作。我們常用的邏輯運算符有:
&&
:邏輯與,用來判斷多個條件是否同時滿足。||
:邏輯或,用來判斷多個條件是否至少有一個滿足。!
:邏輯非,用來取反一個條件的結果。以下為使用範例:
p := true
q := false
andResult := p && q // false,因為 p 和 q 不都為 true
orResult := p || q // true,因為 p 或 q 至少有一個為 true
notResult := !p // false,因為 p 為 true,取反後為 false
位運算符用來在二進制位級別執行操作。我們常用的位運算符有:
&
:按位與,對每一位進行與操作。|
:按位或,對每一位進行或操作。^
:按位異或,對每一位進行異或操作。<<
:左移,將二進制位向左移動指定的位數。>>
:右移,將二進制位向右移動指定的位數。以下為使用範例:
a := 5 // 二進制表示:0101
b := 3 // 二進制表示:0011
andResult := a & b // 二進制表示:0001,十進制表示:1
orResult := a | b // 二進制表示:0111,十進制表示:7
xorResult := a ^ b // 二進制表示:0110,十進制表示:6
leftShiftResult := a << 1 // 二進制表示:1010,十進制表示:10
rightShiftResult := a >> 1 // 二進制表示:0010,十進制表示:2
其他運算符用來執行一些特定的操作。我們常用的其他運算符有:
&
:取地址,用來獲取變數的內存地址。*
:指針,用來聲明指針變數。<-
:通道操作符,用來發送和接收通道消息。以下為使用範例:
var num int = 42
ptr := &num // ptr 現在包含 num 的內存地址
var value int = *ptr // value 現在包含 ptr 所指向的內存中的值
ch := make(chan int) // 創建一個整數通道
ch <- 10 // 將值 10 發送到通道 ch 中
receivedValue := <-ch // 從通道 ch 接收值並存儲在 receivedValue 中