本文将介绍go语言运算符,包含算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等,下文通过实例和文字描述上述内容。

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

被折叠的 条评论
为什么被折叠?



