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

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

Go defer 函數(shù)返回值

Go defer 函數(shù)返回值

Go
動漫人物 2023-07-10 17:29:07
func main() {    println(DeferFunc1(1))    println(DeferFunc2(1))    println(DeferFunc3(1))}func DeferFunc1(i int) (t int) {    t = i    defer func() {        t += 3    }()    return t}func DeferFunc2(i int) int {    t := i    defer func() {        t += 3    }()    return t}func DeferFunc3(i int) (t int) {    defer func() {        t += i    }()    return 2}上面的代碼將打?。? 1 3. 誰能解釋一下嗎?當(dāng)然DeferFunc1應(yīng)該返回4。但為什么 willDeferFunc2和will分別DeferFunc3返回1和呢?3這與 Go 中的閉包或變量作用域有關(guān)嗎?
查看完整描述

1 回答

?
素胚勾勒不出你

TA貢獻1827條經(jīng)驗 獲得超9個贊

如果DeferFunc1對您有意義,那么DeferFunc3它們應(yīng)該說明相同的概念,即您可以修改命名的返回值。

DeferFunc1你的延遲中添加 3 到 1,得到你預(yù)期的 4。
DeferFunc3你的延遲中添加 1 到 2,得到 3。這里的裸返回,或者返回 t 會讓你得到 4。但在這種情況下,t是在延遲運行之前分配值 2,因此您得到 3。
由于DeferFunc2您沒有使用命名返回,因此您無法利用此技術(shù)。


查看完整回答
反對 回復(fù) 2023-07-10
  • 1 回答
  • 0 關(guān)注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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