本文将介绍go语言运算符,包含算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等,下文通过实例和文字描述上述内容。
算术运算符
- 加 +
- 减 -
- 乘 *
- 除 /
- 求余 %
- 自增 ++
- 自减 —
提示:
自增和自减都是后缀处理(a++, a—),前缀则会报错(++a, —a)
例子
package main
import . "fmt"
func test() {
var a int = 103
var b int = 33
var c int
c = a + b
Printf("a+b=%d\n", c)
c = a - b
Printf("a-b=%d\n", c)
c = a * b
Printf("a*b=%d\n", c)
c = a / b
Printf("a/b=%d\n", c)
c = a % b
Printf("a%sb=%d\n", "%", c)
a++
Printf("a++ = %d\n", a)
// ++a /* error */
b--
Printf("b-- = %d\n", b)
// --b /* error */
}
func main() {
test()
}
[root@iZwz9a9kyixoqvys89ewj4Z ex]# go run operate.go
a+b=136
a-b=70
a*b=3399
a/b=3
a%b=4
a++ = 104
b-- = 32
关系运算符
- 等于 ==
- 不等于 !=
- 大于 >
- 小于 <
- 不小于 >=
- 不大于 <=
条件满足是为true,否则为false
例子
package main
import . "fmt"
func main() {
var a int = 1
var b int = 1
var c int = 3
Println(a==b)
Println(a==c)
}
[root@iZwz9a9kyixoqvys89ewj4Z ex]# go run operate.go
true
false
逻辑运算符
- 与 &&
- 或 ||
- 非 !
条件满足是为true,否则为false
位运算符
针对整数进行二进制运算
- 按位与 &
- 按位或 |
- 按位异或 ^
- 左移运算符 << 左移n位就是乘以2的n次方
- 右移运算符 >> 右移n位就是除以2的n次方
提示
左移运算符,指定向左移动的位数,如果超出变量范围,则高位丢弃,低位补0
例子
package main
import . "fmt"
func test() {
var a int = 10 /* 10 的二进制是 1010*/
var b int = 3 /* 3 的二进制是 0011 */
var c int
c = a & b /* 答案是 0010 (2) */
Printf("a&b=%d\n", c)
c = a | b /* 答案是 1011 (11) */
Printf("a|b=%d\n", c)
c = a ^ b /* 答案是 1001 (9) */
Printf("a^b=%d\n", c)
c = a >> 2 /* 答案是 0010 (2) */
Printf("c = %d\n", c)
c = b << 3 /* 答案是 0001 1000 (24) */
Printf("c = %d\n", c)
}
func main() {
test()
}
[root@iZwz9a9kyixoqvys89ewj4Z ex]# go run operate.go
a&b=2
a|b=11
a^b=9
c = 2
c = 24
赋值运算符
- 直接赋值 =
- 相加后赋值 +=
- 相减后赋值 -=
- 相乘后赋值 *=
- 相除后赋值 /=
- 求余后赋值 %=
- 左移后赋值 <<=
- 右移后赋值 >>=
- 按位与后赋值 &=
- 按位或后赋值 |=
- 按位异或后赋值 ^=
其它运算符
- 取地址 &
- 指针变量 *
提示
可通过%T输出变量的类型
例子
package main
import . "fmt"
func main() {
var val int = 1
var ptr *int
/* ptr 指向val的地址 */
ptr = &val
Printf("val type = %T\n", val );
Printf("ptr type = %T\n", ptr );
Printf("val = %d\n", val);
Printf("*ptr = %d\n", *ptr);
}
[root@iZwz9a9kyixoqvys89ewj4Z ex]# go run operate.go
val type = int
ptr type = *int
val = 1
*ptr = 1
运算符优先级
优先级值越大,表示优先级越高
- 优先级为1的运算符(从右到左)
=,+=,-=,*=,/=, %=, >=, <<=, &=, ^=, |= - 优先级为2的运算符(从左到右)
|| - 优先级为3的运算符(从左到右)
&& - 优先级为4的运算符 (从左到右)
| - 优先级为5的运算符 (从左到右)
^ - 优先级为6的运算符(从左到右)
& - 优先级为7的运算符(从左到右)
==,!= - 优先级为8的运算符(从左到右)
<, <=, > ,>= - 优先级为9的运算符(从左到右)
<<,>> - 优先级为10的运算符(从左到右)
+,- - 优先级为11的运算符(从左到右)
*(乘), /, % - 优先级为12的运算符(从右到左)
!, *(指针), & , ++ ,— ,+(正), -(负) - 优先级为14的运算符(从左到右)
()
版权声明:B链网原创,严禁修改。转载请注明作者和原文链接
http://www.360bchain.com/article/152.html