第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Go中的短路評估

Go中的短路評估

Go
30秒到達(dá)戰(zhàn)場 2023-05-15 15:09:31
我對短路評估的理解是,僅在 if 語句中需要時(shí)才調(diào)用表達(dá)式。Go 遵循這個(gè)嗎?例如,我會從以下方面獲得更好的平均表現(xiàn):if !isValidQueryParams(&queries) || r == nil || len(queries) == 0 {    return "", fmt.Errorf("invalid querystring")}...對此:if r == nil || len(queries) == 0 || !isValidQueryParams(&queries) {    return "", fmt.Errorf("invalid querystring")}...因?yàn)槭且粋€(gè)開銷比測試地圖長度isValidQueryParams多得多的函數(shù)嗎?r == nil即解釋器是否會首先評估 r == nil,看到它是真的而不費(fèi)心去評估其他條件?編輯:錯(cuò)誤地將短路評估稱為惰性評估
查看完整描述

3 回答

?
慕沐林林

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊


Go 確實(shí)實(shí)現(xiàn)了正常的短路評估,可以用以下代碼推導(dǎo)出:


package main


import "fmt"


func main() {

? ? for i := 0; i < 10; i++ {

? ? ? ? if testFunc(1) || testFunc(2) {

? ? ? ? ? ? // do nothing

? ? ? ? }

? ? }

}


func testFunc(i int) bool {

? ? fmt.Printf("function %d called\n", i)

? ? return true

}

...這將永遠(yuǎn)給:


$ function 1 called

$ function 1 called

$ function 1 called

$ function 1 called

$ function 1 called

$ function 1 called

$ function 1 called

$ function 1 called

$ function 1 called

$ function 1 called


查看完整回答
反對 回復(fù) 2023-05-15
?
互換的青春

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

這稱為短路評估。根據(jù)本教程,布爾運(yùn)算符使用這個(gè):

盡管在Go 語言規(guī)范中沒有明確說明 Go 使用短路評估,但確實(shí)提到了

邏輯運(yùn)算符應(yīng)用于布爾值并產(chǎn)生與操作數(shù)相同類型的結(jié)果。有條件地評估右操作數(shù)。

這是一個(gè)簡單的例子來證明 Go 使用短路評估

[…]


查看完整回答
反對 回復(fù) 2023-05-15
?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊

您所指的是所謂的“短路求值”——也就是說,僅在完整結(jié)果可用時(shí)才使用正常的關(guān)聯(lián)性規(guī)則對子表達(dá)式求值,并且對其余表達(dá)式的求值不會根據(jù)有問題的二元運(yùn)算符的規(guī)則。

Go 確實(shí)實(shí)現(xiàn)了邏輯表達(dá)式的短路評估。

“惰性求值”完全是另一回事——通常在所謂的“函數(shù)式”編程語言中實(shí)現(xiàn),并沒有直接在 Go 中實(shí)現(xiàn)。


話雖如此,我會注意到雖然 Go 沒有直接(與語法和運(yùn)行時(shí)一樣)支持惰性求值,但可以在需要時(shí)使用它。

例如,您可能有一個(gè) goroutine 從通道讀取可能無限數(shù)量的項(xiàng)目,并以一種或另一種方式處理它們,而另一個(gè) goroutine(或其中的幾個(gè))產(chǎn)生這些值并通過通道發(fā)送它們。這樣,這些值只會在接收端“具體化”,不會比它們實(shí)際準(zhǔn)備好處理的速度更快。


查看完整回答
反對 回復(fù) 2023-05-15
  • 3 回答
  • 0 關(guān)注
  • 240 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號