go语言基础知识-运算符

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

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 其它运算符
  • 运算符优先级

算术运算符

  • 加 +
  • 减 -
  • 乘 *
  • 除 /
  • 求余 %
  • 自增 ++
  • 自减 —

提示: 
自增和自减都是后缀处理(a++, a—),前缀则会报错(++a, —a)

例子

 
  
  1. package main
  2. import . "fmt"
  3. func test() {
  4. var a int = 103
  5. var b int = 33
  6. var c int
  7. c = a + b
  8. Printf("a+b=%d\n", c)
  9. c = a - b
  10. Printf("a-b=%d\n", c)
  11. c = a * b
  12. Printf("a*b=%d\n", c)
  13. c = a / b
  14. Printf("a/b=%d\n", c)
  15. c = a % b
  16. Printf("a%sb=%d\n", "%", c)
  17. a++
  18. Printf("a++ = %d\n", a)
  19. // ++a /* error */
  20. b--
  21. Printf("b-- = %d\n", b)
  22. // --b /* error */
  23. }
  24. func main() {
  25. test()
  26. }
  27. [root@iZwz9a9kyixoqvys89ewj4Z ex]# go run operate.go
  28. a+b=136
  29. a-b=70
  30. a*b=3399
  31. a/b=3
  32. a%b=4
  33. a++ = 104
  34. b-- = 32

关系运算符

  • 等于 ==
  • 不等于 !=
  • 大于 >
  • 小于 <
  • 不小于 >=
  • 不大于 <=

条件满足是为true,否则为false

例子

 
  
  1. package main
  2. import . "fmt"
  3. func main() {
  4. var a int = 1
  5. var b int = 1
  6. var c int = 3
  7. Println(a==b)
  8. Println(a==c)
  9. }
  10. [root@iZwz9a9kyixoqvys89ewj4Z ex]# go run operate.go
  11. true
  12. false

逻辑运算符

  • 与 &&
  • 或 ||
  • 非 !
    条件满足是为true,否则为false

位运算符

针对整数进行二进制运算

  • 按位与 &
  • 按位或 |
  • 按位异或 ^
  • 左移运算符 << 左移n位就是乘以2的n次方
  • 右移运算符 >> 右移n位就是除以2的n次方

提示
左移运算符,指定向左移动的位数,如果超出变量范围,则高位丢弃,低位补0

例子

 
  
  1. package main
  2. import . "fmt"
  3. func test() {
  4. var a int = 10 /* 10 的二进制是 1010*/
  5. var b int = 3 /* 3 的二进制是 0011 */
  6. var c int
  7. c = a & b /* 答案是 0010 (2) */
  8. Printf("a&b=%d\n", c)
  9. c = a | b /* 答案是 1011 (11) */
  10. Printf("a|b=%d\n", c)
  11. c = a ^ b /* 答案是 1001 (9) */
  12. Printf("a^b=%d\n", c)
  13. c = a >> 2 /* 答案是 0010 (2) */
  14. Printf("c = %d\n", c)
  15. c = b << 3 /* 答案是 0001 1000 (24) */
  16. Printf("c = %d\n", c)
  17. }
  18. func main() {
  19. test()
  20. }
  21. [root@iZwz9a9kyixoqvys89ewj4Z ex]# go run operate.go
  22. a&b=2
  23. a|b=11
  24. a^b=9
  25. c = 2
  26. c = 24

赋值运算符

  • 直接赋值 =
  • 相加后赋值 +=
  • 相减后赋值 -=
  • 相乘后赋值 *=
  • 相除后赋值 /=
  • 求余后赋值 %=
  • 左移后赋值 <<=
  • 右移后赋值 >>=
  • 按位与后赋值 &=
  • 按位或后赋值 |=
  • 按位异或后赋值 ^=

其它运算符

  • 取地址 &
  • 指针变量 *

提示
可通过%T输出变量的类型

例子

 
  
  1. package main
  2. import . "fmt"
  3. func main() {
  4. var val int = 1
  5. var ptr *int
  6. /* ptr 指向val的地址 */
  7. ptr = &val
  8. Printf("val type = %T\n", val );
  9. Printf("ptr type = %T\n", ptr );
  10. Printf("val = %d\n", val);
  11. Printf("*ptr = %d\n", *ptr);
  12. }
  13. [root@iZwz9a9kyixoqvys89ewj4Z ex]# go run operate.go
  14. val type = int
  15. ptr type = *int
  16. val = 1
  17. *ptr = 1

运算符优先级

优先级值越大,表示优先级越高

  • 优先级为1的运算符(从右到左)
    =,+=,-=,*=,/=, %=, >=, <<=, &=, ^=, |=
  • 优先级为2的运算符(从左到右)
    ||
  • 优先级为3的运算符(从左到右)
    &&
  • 优先级为4的运算符 (从左到右)
    |
  • 优先级为5的运算符 (从左到右)
    ^
  • 优先级为6的运算符(从左到右)
    &
  • 优先级为7的运算符(从左到右)
    ==,!=
  • 优先级为8的运算符(从左到右)
    <, <=, > ,>=
  • 优先级为9的运算符(从左到右)
    <<,>>
  • 优先级为10的运算符(从左到右)
    +,-
  • 优先级为11的运算符(从左到右)
    *(乘), /, %
  • 优先级为12的运算符(从右到左)
    !, *(指针), & , ++ ,— ,+(正), -(负)
  • 优先级为14的运算符(从左到右)
    ()

版权声明:B链网原创,严禁修改。转载请注明作者和原文链接
http://www.360bchain.com/article/152.html

你可能感兴趣的:(go)