开发者学堂课程【Go语言核心编程 - 基础语法、数组、切片、Map:程短路与和短路或】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/625/detail/9548
短路与和短路或
内容介绍:
一、注意事项和细节说明
二、案例演示
一、注意事项和细节说明
1.&&也叫短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为false。
逻辑语言就是两个条件都为真。当第一个条件为假时,第二个条件就不需要判断,最终结果就为否定。
2.||也叫短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为true。
当第一个条件为真时,第二个条件是真或者为假。已经对第一个条件没有任何影响。因此第二条件不要判断最终结果都为正确。
二、案例演示
演示短路与和短路或的运行特点:
//声明一个函数(测试)
func test
(
) bool {
//test 是函数的名字,bool 是返回值
fmt.Print
l
n( “test....”)
//输出一句话
return true
//返回true
}
func main(
)
{
var i int = 10
if i > 9 &
&
test()
{
//test 最终返回 bool 值,所以可如上书写使用
fmt
.
Print1n(
“ok
...
”)
//输出
}
分析:i > 9为真时,则判断 test 是否为真,因为是与的关系,则调用 test 的函数,先输出”test....”,再输出“ok...”,那么整个代码先输出 test 再输出ok。
进一步执行,查看效果:
D: \goproject\ src\go_cade \chapter04\demo04>go run main.go
得到:
test….
ok…
可以看到没有问题,说明的确是完成了后面的判断。
相反而言:
if i <9 &
&
test()
{
fmt
.
Print
l
n(
“ok
...
”)
因为10不小于9,那么i <9为假,test则不需要判断,并进行执行,则”test....”不会输出,“ok...”也不会输出。因为i <9为假,不会再去调用test函数。此时体现短路与的特点。
结果:
D : \goproject tsrc \go _code
\
chapter04\demo04>go run main – go
得到:
无任何输出
说明test未作出任何判断,这就是短路与的现象。
//短路与
//说明因为i<9为false ,因此后面的test()就不执行
// if i < 9 && test() {
//fmt.Println( “ok. ..”)
}
if i
<
9 || test() {
fmt.Println( “hello...”)
//为示区别ok改为hello
}
分析:
i<9为假,判断 test(),此时调用 test 函数,会输出 test,test 为真,则整个结果为真,因此会输出:
fmt.Println( “
test
.…”)
fmt.Println( “hello …”)
运行结果:
D : \goproject tsrc \go _code
\
chapter04\demo04>go run main.go
D : \goproject tsrc \go _code
\
chapter04\demo04>go run main.go
得到:
test….
hello…
可以看到分析正确。
//说明因为i>9为true,因此后面的test()就不执行
若
if i > 9 ||test() {
fmt.Print1n( “hello...”)
}
分析:
i > 9为真,因为10>9,test则不会调用,因为整个结果为真,会直接输出hello。
运行结果:
D: \gropro ject\
src
\ go_code chapter04\demo04>go run main .go
得到:
hello…
可以看到输出的是 hello,这就是短路或一种语法现象。
关于逻辑运算的细节就讲解到这里。