代碼:
package main
import (
"fmt"
"time"
)
func t() bool {
time.Sleep(time.Second*10)
return true
}
func f() bool{
return false
}
func main() {
start := time.Now().UnixNano()
if t() && f(){
}
fmt.Println("時間消耗(ns):",time.Now().UnixNano()-start)
start = time.Now().UnixNano()
if f() && t(){
}
fmt.Println("時間消耗(ns):",time.Now().UnixNano()-start)
}
輸出:
時間消耗(ns): 10004053000
時間消耗(ns): 0
問:爲啥同樣的if語句,只是兩個條件的位置交換了,怎麼消耗時間不一樣呢?
答:在if語句中,它的條件判斷是順序執行,當執行完第一個判斷之後,如果不滿足條件,它會立刻跳出if語句,而不再往下執行後續的判斷語句了。
Tip:當我們做多個條件的並列判斷時,應當利用if的這一特性,考慮優先將時間消耗低的置於前面進行判斷,有助於提高程序的運行效率。