Go语言中逻辑运算符的短路特性

逻辑运算符的短路特性

逻辑运算符&& 和 ||在执行时,如果前边的结果能够决定整个表达式的结果,那么就不会执行下一条语句。

  • 比如 && ,前边的式子执行的结果为false,那么后边的结果就不需要执行。因为后边的式子不论结果是什么,整个表达式的结果都为false
  • 同理,在|| 语句中,假设前边的式子为true,那么整个式子的结果就为true,而无需执行后边的式子

举例说明

  1. 与(&&) 运算
package main

import "fmt"

func main() {
	 a,b := 1,0
	
	if a < 0 && a / b > 0 {		//b == 0,因此假设代码执行到`&&`运算符之后,那么代码会报错
		fmt.Println("OK")
	}
	fmt.Println("结束")
}

代码在执行时,因为b == 0,那么如果代码执行到a / b > 0的部分则会报错。执行结果
在这里插入图片描述

对以上结果的说明:因为a<0 的执行结果为false,并且之后为&&逻辑,那么这个语句不往后执行,直接将执行的结果置为false。那么if判断的结果为假,直接打印”结束“。

package main

import "fmt"

func main() {
	 a,b := 1,0
	
    if a > 0 && a / b > 0 {		//b == 0,因此假设代码执行到`&&`运算符之后,那么代码会报错
		fmt.Println("OK")
	}
	fmt.Println("结束")
}

将if之后的a < 0改为a > 0,那么这一句为真,需要执行&&之后的条件,此时应该报错:
在这里插入图片描述

  1. 或(||)运算

    或运算和与运算正好相反,在前边式子执行为false的情况下会继续向后执行,若前边式子执行为true,则不再向后执行

package main

import "fmt"

func main() {
	 a,b := 1,0
	
	if a < 0 || a / b > 0 {		//b == 0,因此假设代码执行到`&&`运算符之后,那么代码会报错
		fmt.Println("OK")
	}
	fmt.Println("结束")
}

上述代码执行结果:
在这里插入图片描述

对上述结果的说明:在||符号之前,a < 0判断为假,那么需要向后执行,此时b == 0,不能作为除数,代码报错

对代码进行更改,如下

package main

import "fmt"

func main() {
	 a,b := 1,0
	
	if a > 0 || a / b > 0 {		//b == 0,因此假设代码执行到`&&`运算符之后,那么代码会报错
		fmt.Println("OK")
	}
	fmt.Println("结束")
}

执行结果:
在这里插入图片描述

此时,a > 0,执行的结果为true,那么||语句不再向后执行,则if判断为真,打印if条件下的”OK“,之后打印”结束“

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值