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

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

Go中的短路評(píng)估

Go中的短路評(píng)估

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

3 回答

?
慕沐林林

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


Go 確實(shí)實(shí)現(xiàn)了正常的短路評(píng)估,可以用以下代碼推導(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


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

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

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

盡管在Go 語(yǔ)言規(guī)范中沒(méi)有明確說(shuō)明 Go 使用短路評(píng)估,但確實(shí)提到了

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

這是一個(gè)簡(jiǎn)單的例子來(lái)證明 Go 使用短路評(píng)估

[…]


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

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

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

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

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


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

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


查看完整回答
反對(duì) 回復(fù) 2023-05-15
  • 3 回答
  • 0 關(guān)注
  • 220 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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