MST

星途 面试题库

面试题:Go语言中短路逻辑在条件表达式中的体现

请阐述在Go语言中,短路逻辑在条件表达式里是如何工作的?并举例说明两个不同类型的条件表达式(如逻辑与、逻辑或)的短路情况。
19.1万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

在Go语言中,短路逻辑在条件表达式中,当通过前面的子表达式就能确定整个表达式的结果时,后面的子表达式将不会被求值。

逻辑与(&&)的短路情况

逻辑与表达式中,只有当所有子表达式都为true时,整个表达式才为true。如果第一个子表达式为false,由于整个表达式必然为false,第二个子表达式不会被求值。

package main

import "fmt"

func main() {
    a := false
    b := true
    result := a && func() bool {
        fmt.Println("这个函数不会被调用")
        return b
    }()
    fmt.Println(result)
}

在上述代码中,afalse,所以func() bool这个函数不会被调用。

逻辑或(||)的短路情况

逻辑或表达式中,只要有一个子表达式为true,整个表达式就为true。如果第一个子表达式为true,由于整个表达式必然为true,第二个子表达式不会被求值。

package main

import "fmt"

func main() {
    a := true
    b := false
    result := a || func() bool {
        fmt.Println("这个函数不会被调用")
        return b
    }()
    fmt.Println(result)
}

在上述代码中,atrue,所以func() bool这个函数不会被调用。