golang爬坑筆記之自問自答系列(4)——if判斷中你可能並不知道的事

代碼:

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的這一特性,考慮優先將時間消耗低的置於前面進行判斷,有助於提高程序的運行效率。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章