Golang学习之路一六运算符
算数运算符
符号 说明 + 相加 - 相减 * 相乘 / 相除 % 求余 ++ 自增 – 自减
package mainimport "fmt" func main ( ) { a := 10 b := 6 fmt. Println ( a+ b) fmt. Println ( a- b) fmt. Println ( a* b) fmt. Println ( a/ b) fmt. Println ( a% b) fmt. Println ( a) a++ fmt. Println ( a) fmt. Println ( b) b-- fmt. Println ( b)
}
关系运算符
符号 说明 == 等于 != 不等于 > 大于 < 小于 >= 大于等于 <= 小于等于
package mainimport "fmt" func main ( ) { a := 10 b := 6 fmt. Println ( a== b) fmt. Println ( a!= b) fmt. Println ( a> b) fmt. Println ( a< b) fmt. Println ( a>= b) fmt. Println ( a<= b) fmt. Println ( a== b)
}
逻辑运算符
package mainimport "fmt" func main ( ) { a := 10 b := 6 c := 6 fmt. Println ( a > b && b >= c) fmt. Println ( a > b || b > c) var d bool fmt. Println ( ! d)
}
赋值运算符
运算符 描述 实例 = 简单的赋值运算符,将一个表达式的值赋给一个左值 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 = 按位或后赋值
位运算
运算符 描述 实例 & 按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。 (A & B) 结果为 12, 二进制为 0000 1100 按位或运算符" ^ 按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为 1。 (A ^ B) 结果为 49, 二进制为 0011 0001 << 左移运算符"<<“是双目运算符。左移 n 位就是乘以 2 的 n 次方。 其功能把”<<“左边的运算数的各二进位全部左移若干位,由”<<"右边的数指定移动的位数,高位丢弃,低位补 0。 A << 2 结果为 240 ,二进制为 1111 0000 >> 右移运算符">>“是双目运算符。右移 n 位就是除以 2 的 n 次方。 其功能是把”>>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数。 A >> 2 结果为 1
package mainimport "fmt" func main ( ) { var a uint = 60 var b uint = 13 var c uint = 0 c = a & b fmt. Println ( c) c = a | b fmt. Println ( c) c = a ^ b fmt. Println ( c) c = a << 2 fmt. Println ( c) c = a >> 2 fmt. Println ( c)
}
其他运算符
运算符 描述 实例 & 返回变量存储地址 &a; 将给出变量的实际地址。 * 指针变量。 *a; 是一个指针变量
package mainimport "fmt" func main ( ) { var a int = 4 var b int32 var c float32 var ptr * int fmt. Printf ( "a 变量类型为 = %T\n" , a ) ; fmt. Printf ( "b 变量类型为 = %T\n" , b ) ; fmt. Printf ( "c 变量类型为 = %T\n" , c ) ; ptr = & a fmt. Printf ( "a 的值为 %d\n" , a) ; fmt. Printf ( "*ptr 为 %d\n" , * ptr) ;
}
运算符优先级
有些运算符拥有较高的优先级,二元运算符的运算方向均是从左至右。下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:
优先级 运算符 5 * / % << >> & &^ 4 + - \ ^ 3 == != < <= > >= 2 && 1
当然,我们可以通过使用括号来临时提升某个表达式的整体运算优先级。