go 运算符

偶尔善良 提交于 2020-01-16 20:15:30

运算符基本介绍

运算符是一种特殊的符号,用以表示数据的运算,赋值和比较等

  • 算术运算符
  • 赋值运算符
  • 比较运算符/关系运算符
  • 逻辑运算符
  • 位运算符
  • 其它运算符

算术运算符

算术运算符是对数值类型的变量进行运算的

运算符 运算 示例 结果
+ 正号 +3 3
- 负号 -4 -4
+ 5+5 10
- 6-4 2
* 3*4 12
/ 5/5 1
% 取模(取余) 7%5 2
++ 自增 a=2 a++ a=3
自减 a=2 a– a=1
+ 字符串相加 “he”+“llo” “hello”
package main

import (
	"fmt"
)

func main()  {
	fmt.Println(10 / 4)
	var n1 float32 = 10 / 4
	fmt.Println(n1)
	//希望保留小数,则需要有浮点数参与运算
	var n2 float32 = 10.0 /4
	fmt.Println(n2)

	fmt.Println(10%3)
	fmt.Println(-10%3)
	fmt.Println(10%-3)
	fmt.Println(-10%-3)
}

运行结果

2
2
2.5
1
-1
1
-1
func main()  {
	var i int = 10
	i++
	fmt.Println("i=", i)
	i--
	fmt.Println("i=", i)
}

算术运算符使用的注意事项

  • 对于除号 / , 它的整数除和小数除是有区别的: 整数之间做除法,只保留整数部分
  • 当对一个数取模时, 可以等价 a%b=a-a/b*b
  • golang的自增自减只能当做一个独立语言使用
package main

import (
	"fmt"
)

func main()  {
	var i int = 10
	var a int
	a = i++  // 错误
	a = i--  // 错误
	fmt.Println("a=", a)

	if i++ > 0 { //错误
		fmt.Println("ok")
	}
}
  • golang的 ++ 和 – 只能卸载变量的后面, 即: 只有 a++ 和 a–

  • golang 的设计者去掉c/java中的自增自减的容易混淆的写法,让golang更加简洁,统一(强制性的)

func main()  {
	var days int = 97
	var week int = days / 7
	var day int = days % 7
	fmt.Printf("%d个星期零%d天\n", week, day)

	var h float32 = 134.2
	var s float32 = 5.0 /9 * (h - 100)
	fmt.Printf("%v 对应的摄氏温度=%v", h, s)
}

关系运算符(比较运算符)

  • 关系运算符的结果都是bool型
  • 关系表达式 用于条件或循环中
运算符 运算 示例 结果
== 等于 4==3 false
!= 不等于 4!=3 true
< 小于 4<3 false
> 大于 4>3 true
<= 小于等于 4<=3 false
>= 大于等于 4>=3 true
func main()  {
	var n1 int = 9
	var n2 int = 8
	fmt.Println(n1 == n2)
	fmt.Println(n1 != n2)
	fmt.Println(n1 > n2)
	fmt.Println(n1 >= n2)
	fmt.Println(n1 < n2)
	fmt.Println(n1 <= n2)
	flag := n1 > n2
	fmt.Println("flag=", flag)
}

运行结果

false
true
true
true
false
false
flag= true

逻辑运算符

  • 用于连接多个条件(一般就是关系表达式),最终的结果也是一个bool值
运算符 含义
&&
||
!
func main()  {
	var age int = 40
	if age > 30 && age < 50 {
		fmt.Println("ok1")
	}
	if age > 30 && age < 40 {
		fmt.Println("ok2")
	}
	if age > 30 || age < 50 {
		fmt.Println("ok3")
	}
	if age > 30 || age < 40 {
		fmt.Println("ok4")
	}
	if age > 30 {
		fmt.Println("ok5")
	}
	if !(age > 30) {
		fmt.Println("ok6")
	}
}

运行结果

ok1
ok3
ok4
ok5

逻辑运算符注意事项

  • &&也叫短路与: 如果第一个条件为false,则第二个条件不会判断,最终为false
  • || 也叫短路或: 如果第一个条件为true,则第二个条件不会判断,最终为true
package main

import (
	"fmt"
)

func test() bool {
	fmt.Println("test...")
	return true
}

func main()  {
	var i int = 10
	if i < 9 && test() {
		fmt.Println("ok...")
	}
	if i > 9 || test() {
		fmt.Println("hello...")
	}
}

赋值运算符

赋值运算符就是将某个运算后的值,赋给指定的变量

运算符 示例 含义
= 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^=2 等价于 c=c^2
func main()  {
	var i int
	i = 10
	fmt.Println("i=", i)

	a := 9
	b :=2
	fmt.Printf("交换前的情况是 a=%v, b=%v \n", a, b)
	t := a
	a = b
	b = t
	fmt.Printf("交换后的情况是 a=%v, b=%v \n", a, b)
	
	a += 17
	fmt.Println("a=", a)
}

赋值运算符的特点

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!