目錄
運算符
Golang 內置的運算符包括:
- 賦值運算符
- 算術運算符
- 邏輯運算符
- 關係運算符
- 位運算符
- 其他運算符
賦值運算符
算術運算符
注意:Golang 的自增,自減只能作爲表達式使用,而不能用於賦值語句,例如:
a++ // 這是允許的,等同於 a = a + 1
a--
a = a++ // 這是不允許的,會出現變異錯誤 syntax error: unexpected ++ at end of statement
邏輯運算符
關係運算符
位運算符
位運算符對整數在內存中的二進制位進行操作。
示例:
package main
import "fmt"
func main() {
var a uint = 60 /* 60 = 0011 1100 */
var b uint = 13 /* 13 = 0000 1101 */
var c uint = 0
c = a & b /* 12 = 0000 1100 */
fmt.Printf("第一行 - c 的值爲 %d\n", c )
c = a | b /* 61 = 0011 1101 */
fmt.Printf("第二行 - c 的值爲 %d\n", c )
c = a ^ b /* 49 = 0011 0001 */
fmt.Printf("第三行 - c 的值爲 %d\n", c )
c = a << 2 /* 240 = 1111 0000 */
fmt.Printf("第四行 - c 的值爲 %d\n", c )
c = a >> 2 /* 15 = 0000 1111 */
fmt.Printf("第五行 - c 的值爲 %d\n", c )
}
指針運算符、取值運算符和取址運算符
“*” 與數據類型預留標識符結合使用時,表示一個指針變量;其餘則表示一個取值運算符,取出指針指向的內存數據值。
示例:
package main
import "fmt"
func main() {
var a int = 4
var b int32
var c float32
var ptr *int // 定義一個整型指針變量 ptr
/* 運算符實例 */
fmt.Printf("第 1 行 - a 變量類型爲 = %T\n", a );
fmt.Printf("第 2 行 - b 變量類型爲 = %T\n", b );
fmt.Printf("第 3 行 - c 變量類型爲 = %T\n", c );
/* & 和 * 運算符實例 */
ptr = &a /* 'ptr' 包含了 'a' 變量的地址 */
fmt.Printf("a 的值爲 %d\n", a);
fmt.Printf("*ptr 爲 %d\n", *ptr); // 取的整型指針變量 ptr 的數據值
}
運算符優先級
表列出了所有運算符以及它們的優先級,由上至下代表優先級由高到低。
其中,二元運算符的運算方向均是從左至右:
package main
import "fmt"
func main() {
var a int = 20
var b int = 10
var c int = 15
var d int = 5
var e int;
e = (a + b) * c / d; // ( 30 * 15 ) / 5
fmt.Printf("(a + b) * c / d 的值爲 : %d\n", e );
e = ((a + b) * c) / d; // (30 * 15 ) / 5
fmt.Printf("((a + b) * c) / d 的值爲 : %d\n" , e );
e = (a + b) * (c / d); // (30) * (15/5)
fmt.Printf("(a + b) * (c / d) 的值爲 : %d\n", e );
e = a + (b * c) / d; // 20 + (150/5)
fmt.Printf("a + (b * c) / d 的值爲 : %d\n" , e );