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语言学习十二 - 布尔表达式采用短路逻辑的主要内容,如果未能解决你的问题,请参考以下文章