go语言学习十二 - 布尔表达式采用短路逻辑

Posted scala

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言学习十二 - 布尔表达式采用短路逻辑相关的知识,希望对你有一定的参考价值。

package main

import "fmt"

func main() {

	//运行结果:a
	if true || b() { //go 的 if 判断采用短路求值,值已经确定后续的表达式不会计算也不会被调用
		fmt.Println("a")
	}

	//运行结果:ba
	if or(true, b()) { //函数的参数必须被即时求值的
		fmt.Println("a")
	}

	//运行结果:a
	if orfunc(true, b) { //传入函数参数的函数实现惰性求值
		fmt.Print("a")
	}
}

func b() bool {
	fmt.Print("b")
	return false
}

func or(a, b bool) bool {
	return a || b
}

func orfunc(a bool, b func() bool) bool {
	return a || b()
}

以上是关于go语言学习十二 - 布尔表达式采用短路逻辑的主要内容,如果未能解决你的问题,请参考以下文章

Golang入门到项目实战 | go语言布尔类型

四月二十二日报

Golang✔️走进 Go 语言✔️ 第六课 条件表达式

编译原理—中间代码生成布尔表达式翻译短路计算控制流语句翻译条件语句循环语句

go语言入门

是否存在程序员可能希望避免对布尔表达式进行短路评估的合理场景? [关闭]