运算符
算术运算符
算术运算符是对数值类型的变量进行运算的,比如,加减乘除。在Go程序中使用的非常多。
一览表:
/ % 的使用
package main
import "fmt"
func main() {
// / % 案例
fmt.Println(10 / 4) // 运算结果为 2 , 因为除号两边都是整数
fmt.Println(10.0 / 4.0)//浮点数参与之后,运行结果为 2.5
var n1 float32 = 10.0 / 4
fmt.Println(n1)
//演示 % 的使用
fmt.Println("10 % 3 = ", 10%3)
fmt.Println("-10 % 3 = ", -10%3)
fmt.Println("10 % -3 = ", 10%-3) //被除数的正负性决定了结果的正负性
}
++ – 的使用
var i int = 10
i++
fmt.Println(i)//11
i--
fmt.Println(i)//10
算术运算符使用注意事项
1) 对于除号”/“,他的整数除和小数除是有区别的,整数之间做除法时,只保留整数部分而舍弃小数部分。例如:x := 19/5 , 结果是3
2) 当对一个数取模时,可以等价 a%b=a-a/b*b
3) Golang的自增自减只等当作一个独立语言使用时,不能这样使用 b:=a++ 或 b:=a–或a = i++
4) Golang的++和-- 只能写在变量的后面,不能写在变量的前面,即:只有 a++ a-- 没有 ++a --a
5) Golang的设计者去掉 c / java中的 自增自减的容易混淆的写法。
关系运算符(比较运算符)
1) 关系运算符的结果都是bool型,也就是要么是true,要么是false
2) 关系表达式 经常用在 if 结构 的条件中或循环结构的条件中
3) 关系运算符组成的表达式称为关系表达式
4)比较运算符"==“不能误写成”="
逻辑运算符
用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个bool值。
&& :逻辑与
||:逻辑或
! :逻辑非
注意事项
1) && 也叫短路与: 如果第一个条件为 false,则第二个条件不会判断,最终结果为false
2)|| 也叫短路或,如果第一个条件为true,则第二个条件不会判断,最终结果为true。
赋值运算符
赋值运算符就是将某个运算厚的值,赋给指定的变量。
常规赋值运算符:
= : 将一个表达式的值赋给左值
+=: 相加后再赋值 例: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
|=
: 按位或后赋值 C|=2 等于 C=C|2
赋值运算符的特点
1) 运算顺序从右往左
2) 赋值运算符的左边 只能是变量,右边可以是变量、表达式、常量值
3) 复合赋值运算符等价于下面的效果
比如:a+=3等价于a=a+3
不使用中间变量交换两个变量的值
package main
import (
"fmt"
)
func main(){
var a int = 10
var b int = 20
a = a + b
b = a - b
a = a - b
fmt.Printf("a=%v b=%v", a, b)
}
运算符优先级
1)运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。
2)只有单目运算符、赋值运算符是从右向左运算的。
位运算符
&
: 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进制相与。
运算规则是:同时为1,结果为1,否则为零
|
: 按位或运算符"|"是双目运算符。其功能是参与运算的两数各对应的二进位相或。
运算规则是:有一个为1,结果为1,否则为零
^
: 按位异或运算符"^"是双目运算符。其功能是参与运算的两数各对应的二进制相异或。
运算规则是: 当二进位不同时,结果为1,否则为0
<<
: 左移运算符"<<“是双目运算符。其功能把”<<"左边的运算数的各二进制全部左移若干位,高位丢弃,低位补0。左移n位就是乘以2的n次方。
>>
: 右移运算符">>“是双目运算符。其功能是把”>>"左边的运算数的各二进制全部右移若干位,右移n位就是除以2的n次方。