運算符用於在程序運行時執行數學或邏輯運算 Go 語言內置的運算符有:
- 算術運算符
- 關係運算符
- 邏輯運算符
- 位運算符
- 賦值運算符
- 其他運算符
算術運算符:
package main
import "fmt"
func main() {
a, b := 10, 20
fmt.Println(a + b) // 30
fmt.Println(a - b) // -10
fmt.Println(a * b) // 200
fmt.Println(a / b) // 0 整數運算導致 如果想得到0.5 那麼a和b其中一個 需要是浮點數
fmt.Println(a % b) // 10
a++
fmt.Println(a) // 11
a--
fmt.Println(a) // 10
}
關係運算符 返回值爲bool
package main
import "fmt"
func main() {
a, b := 10, 20
fmt.Println(a == b) // false
fmt.Println(a != b) // true
fmt.Println(a > b) // false
fmt.Println(a < b) // true
fmt.Println(a >= b) // false
fmt.Println(a <= b) // true
}
邏輯運算符 返回值爲bool
package main
func main() {
a, b := false, true
fmt.Println(a && b) // 邏輯與 兩個都爲真才爲真 false
fmt.Println(a || b) // 邏輯或 一個爲真就爲真 true
fmt.Println(!a) // 邏輯取反 true
}
位運算符 對整數在內存中的二進制位進行操作
package main
import "fmt"
func main() {
a, b := 1, 2
// 按位與運算符"&"是雙目運算符。 其功能是參與運算的兩數各對應的二進位相與
// 1的二進制爲 0000 0001 2的二進制爲 0000 0010 按位與 爲 0000 0000
// 輸出0
fmt.Println(a & b)
// 按位或運算符"|"是雙目運算符。 其功能是參與運算的兩數各對應的二進位相或
// 1的二進制爲 0000 0001 2的二進制爲 0000 0010 按位或 爲 0000 0011
// 輸出3
fmt.Println(a | b)
// 按位異或運算符"^"是雙目運算符。 其功能是參與運算的兩數各對應的二進位相異或
// 1的二進制爲 0000 0001 2的二進制爲 0000 0010 按位相異或 爲 0000 0011
// 輸出3
fmt.Println(a ^ b)
// 左移運算符"<<"是雙目運算符。左移n位就是乘以2的n次方
// 1的二進制爲 0000 0001 左移兩位 就是0000 0100
// 輸出4
fmt.Println(a << 2)
// 右移運算符">>"是雙目運算符。右移n位就是除以2的n次方
// 1的二進制爲 0000 0001 右移兩位 就是0000 0000
// 輸出0
fmt.Println(a >> 2)
}
賦值運算符
package main
import "fmt"
func main() {
a, b := 10, 20
a = 30
fmt.Println(a) // 30
a += b
fmt.Println(a) // 50
a -= b
fmt.Println(a) // 30
a *= b
fmt.Println(a) // 600
a /= b
fmt.Println(a) // 30
a %= b
fmt.Println(a) // 10
}
其他運算符
package main
import "fmt"
func main() {
a := 4
var ptr *int
ptr = &a
fmt.Println(&a) // 返回變量內存地址 0xc00000a0c8
fmt.Println(*ptr) // 指針變量 根據內存地址獲取變量值 4
}
運算符優先級 5爲最高 你可以通過使用括號來臨時提升某個表達式的整體運算優先級
優先級 | 運算符 |
---|---|
5 | * / % << >> & &^ |
4 | + - |
3 | == != < <= > >= |
2 | && |
1 | || |