Go语言中的运算符

Golang 内置的运算符

算术运算符
关系运算符
逻辑运算符
位运算符(不常用)
赋值运算符

  算数运算符

运算符 描述
+ 相加
- 相减
* 相乘
/ 相除
% 求余
	a := 10
	b := 9
	fmt.Printf("a+b的值为%v\na-b的值为%v\na*b的值为%v\n",a+b,a-b,a*b)

除法注意:如果运算的数都是整数,那么除后,去掉小数部分,保留整数部分 

	a := 15
	b := 5
	fmt.Println(a / b)

	var c float32 = 9.9
	d := 3
	fmt.Println(c / float32(d))

	var c0  = 9.9
	d0 := 3.0
	fmt.Println(c0 / d0)

 

取余注意    余数=被除数-(被除数/除数)*除数 

	var a = 10
	var b = 3
	fmt.Println(a % b) //1

	fmt.Println(-10 % 3) // - 10 - (-10/3)*3  =-1

	fmt.Println(10 % -3) // 10-(10/-3)*-3=1

 注意: ++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符。

 且在 golang 中没有前++,为 错误写法

var i int = 8

        var a int

        a = i++ //错误,i++只能独立使用

        a = i-- //错误, i--只能独立使用

        fmt.Ptintln(a)
	var a = 12
	++a  //错误写法
	fmt.Println(a)

 正确的写法

	var a = 1
	a++
	a--
	fmt.Println(a)

 

 

关系运算符 

运算符 描述
== 检查两个值是否相等,如果相等返回 True 否则返回 False。
!= 检查两个值是否不相等,如果不相等返回 True 否则返回 False。
> 检查左边值是否大于右边值,如果是返回 True 否则返回 False。
>= 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。
< 检查左边值是否小于右边值,如果是返回 True 否则返回 False。
<= 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。
	a := 10
	b := 12
	fmt.Println(a == b)
	fmt.Println(a != b)
	fmt.Println(a > b)
	fmt.Println(a < b)
	fmt.Println(a >= b)
	fmt.Println(a <= b)

Go语言中的运算符_第1张图片

	var a1 = 9
	var a2 = 14
	flag := a1 > a2
	if flag {
		fmt.Println("a1>a2")
	}else{
		fmt.Println("返回为空")
	}

	a0 := 11
	b0 :=20
	flog := a0 < b0
	if flog {
		fmt.Println("a0 b0")
	}

 

逻辑运算符 

运算符 描述
&& 逻辑 AND 运算符。 如果两边的操作数都是 True,则为 True,否则为 False。
ll 逻辑 OR 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False。
! 逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True。

 逻辑 AND 运算符

var a = 18
var b = 8
fmt.Println(a > 10 && b < 10) 
fmt.Println(a > 24 && b < 10) 
fmt.Println(a > 5 && b < 6)   
fmt.Println(a == 5 && b < 6) 

 

 逻辑 OR 运算符

	var a = 23
	var b = 8
	fmt.Println(a > 10 || b < 10) 
	fmt.Println(a > 24 || b < 10) 
	fmt.Println(a > 5 || b < 6)  
	fmt.Println(a == 5 || b < 6)  

  

 逻辑 NOT 运算符

	flag := false
	fmt.Println(!flag)

 

逻辑与和逻辑或短路

逻辑与:前面是false后面就不会执行

//定义一个方法
func test() bool {
	fmt.Println("方法执行了呢")
	return true
}
	var a = 10
	if a > 9 && test() {
		fmt.Println("执行")
	}

Go语言中的运算符_第2张图片 

	var a = 10
	if a > 11 && test() {
		fmt.Println("执行")
	}else{
		fmt.Println("比错了奥,有问题了")
	}

 Go语言中的运算符_第3张图片

逻辑或:前面是true后面就不会执行

	var a = 10
	if a > 11 || test() {
		fmt.Println("执行")
	}

Go语言中的运算符_第4张图片

	var a = 10
	if a < 11 || test() {
		fmt.Println("执行")
	}

 Go语言中的运算符_第5张图片

赋值运算符

运算符 描述
= 简单的赋值运算符,将一个表达式的值赋给一个左值
+= 相加后再赋值
-= 相减后再赋值
*= 相乘后再赋值
/= 相除后再赋值
%= 求余后再赋值
<<= 左移后赋值
>>= 右移后赋值
&= 按位与后赋值
l= 按位或后赋值
^= 按位异或后赋值

 

package main
import "fmt"
func main(){
        var num1 int = 10
        fmt.Println(num1)
        var num2 int = (10 + 20) % 3 + 3 - 7   //=右侧的值运算清楚后,再赋值给=的左侧
        fmt.Println(num2)
        var num3 int = 10
        num3 += 20 //等价num3 = num3 + 20;
        fmt.Println(num3)
}
	var a = 20
	a = 21
	fmt.Println(a)
	

	// var a = 23 + 2
	// fmt.Println(a)

	// var a = 10
	// b := a
	// fmt.Println(b)

	// var a = 10
	// b := a + 2
	// fmt.Println(b)

	// var a = 10
	// a += 3 // 等价于a=a+3
	// fmt.Println(a)

	// var a = 10
	// a = a + 3
	// fmt.Println(a)

	// var a = 10
	// a -= 3 //a=a-3
	// fmt.Println(a)

	// var a = 10
	// a *= 3 //a=a*3
	// fmt.Println(a)

	// var a = 10
	// a /= 3         // a=a/3
	// fmt.Println(a) //结果:3

	// var a float64 = 10
	// a /= 3         // a=a/3
	// fmt.Println(a) //结果:3.3333333333333335

	// var a = 10
	// a %= 3         // a=a%3
	// fmt.Println(a) //1

位运算符(了解即可;涉及二进制间转换)

位运算符对整数在内存中的二进制位进行操作。

运算符 描述
& 参与运算的两数各对应的二进位相与。(两位均为1才为1)
l 参与运算的两数各对应的二进位相或。(两位有一个为1就为1)
^ 参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。(两位不一样则为1)
<< 左移n位就是乘以2的n次方。“a<
>> 右移n位就是除以2的n次方。“a>>b”是把a的各二进位全部右移b位。
    var a = 5 //  101
	var b = 2 //  010
	fmt.Println("a&b=", a&b)   // 000   值0
	fmt.Println("a|b=", a|b)   // 111  值7
	fmt.Println("a^b=", a^b)   // 111  值7
	fmt.Println("a<>b=", a>>b) // 值1    5/2的2次方

 位运算符是十转二进制后,竖着相对比

最后输出的值为二进制还需要转为十进制输出

 

你可能感兴趣的:(#,Golang,golang,开发语言,后端)