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
posted @ 2022-08-29 16:52  sunnybowen  阅读(29)  评论(0编辑  收藏  举报