四、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)

	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")

	}else{
		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("执行")
	}

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

 

逻辑或:前面是true后面就不会执行
	var a = 10
	if a > 11 || test() {
		fmt.Println("执行")
	}

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

 

赋值运算符

运算符描述
=简单的赋值运算符,将一个表达式的值赋给一个左值
+=相加后再赋值
-=相减后再赋值
*=相乘后再赋值
/=相除后再赋值
%=求余后再赋值
<<=左移后赋值
>>=右移后赋值
&=按位与后赋值
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<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。
>>右移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) // 10100  值20   5*2的2次方
	fmt.Println("a>>b=", a>>b) // 值1    5/2的2次方

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵唯一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值