Go语言中的运算符
1. 算术运算符
1.1 加、减、乘、除,取余
var (
a = 1
b = 3
)
func main() {
fmt.Println(a+b)
fmt.Println(a-b)
fmt.Println(a/b) // 0,这个没有python好,python直接输出0.33333333
fmt.Println(a*b)
fmt.Println(a%b) // 这个反而用的比较多,用来判断能不能整除等
}
out
4
-2
0
3
1
1.2 自增,自减
var (
a = 1
b = 3
)
func main() {
a++ //这是独立的语句,不是赋值!python里这样写是会报错的
b-- //它是直接修改了原变量的值!fmt.Println(a=a+1),fmt.Println(a++)这样都是错的!
fmt.Println(a,b)
}
out
2 2
2. 关系运算符
看到这,想起来刚上大学那会学c语言的时候了,关系运算符在实际编码中最常用!
var (
a = 1
b = 3
)
func main() {
fmt.Println(a == b) // go语言是强类型,相同类型的变量才能比较
fmt.Println(a != b)
fmt.Println(a >= b)
fmt.Println(a <= b)
fmt.Println(a < b)
}
out
false
true
false
true
true
3. 逻辑运算符
与或非
在实际编码中常用,按位&、|、^也会使用到,可以很巧妙的实现我们需要的功能
3.1 逻辑与、逻辑或
age :=13
if age >=18 && age<=80{
fmt.Println("事情要自己做哦")
}
if age<=18 || age>=80{
fmt.Println("可以寻求帮助哦")
}
3.2 逻辑非
ismarried:=true
fmt.Println(ismarried)
fmt.Println(!ismarried)
out
true
false
3.3 按位与,或,非
func main() {
// & 按位与(两位均位才为1)重要,但实际编程很少用 二进制
fmt.Println(a&b) //001 | 011
// | 按位或(有一个为1就为1)重要
fmt.Println(a|b)
// ^ 亦或,不一样就为1
fmt.Println(a^b)
}
out
1
3
2
3.4 左移右移
- 左移
fmt.Println(1<<2) //0001 ->0100
fmt.Println(1<<10) //0001-> 10 0000 0000 1024
out
4
1024
- 右移
fmt.Println(5>>1) //0101-> 0010
out
2
注意移动范围
var m = int8(1) //只能移动8位 0000 0001
fmt.Println(m << 10)
fmt.Println(1<<10)
fmt.Println(int64(1)<<10)
out
0
1024
1024
4. 赋值运算符
4.1 基础赋值运算符
var x int = 10
x +=1
fmt.Println(x) //不能直接打印fmt.Println(x +=1),python里这样写也会报错的!
x -=1
fmt.Println(x)
x *=10
fmt.Println(x)
x /=10
fmt.Println(x)
x %=2
fmt.Println(x)
out
11
10
100
10
0
4.2 逻辑赋值运算符
var x = 1
x <<=2 // 0001 ->0100
fmt.Println(x)
x &=2 // 0100 & 0010
fmt.Println(x)
x |=2 // 0000 | 0010
fmt.Println(x)
x ^=2 //0010 ^ 0010
fmt.Println(x)
x >>=2
fmt.Println(x) // fmt.Println(x >>=2)是错的,但是可以fmt.Println(x >>2)
out
4
0
2
0
0