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

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

使用 defer 時在函數(shù)中返回值

使用 defer 時在函數(shù)中返回值

Go
翻翻過去那場雪 2023-05-22 16:55:29
我對返回值使用“延遲”有一些問題。我嘗試以不同的方式運行一個測試函數(shù)(只是 i 的定義不同),但結果不同。所以,我對不同的返回值感到困惑。這是問題所在:功能 1:package mainimport "fmt"func main() {    fmt.Println("a return:", a()) // return value: 0}func a() int {    var i int    defer func() {        i++        fmt.Println("a defer1:", i) // print " a defer1: 1"    }()    return i}返回值:a defer1: 1a return: 0功能2:package mainimport "fmt"func main() {    fmt.Println("a return:", a()) // return value: 1}func a() (i int) {    defer func() {        i++        fmt.Println("a defer1:", i) // print " a defer1: 1"    }()    return i}返回值:a defer1: 1a return: 1一個返回值是0,另一個是1。所以,問題是這兩個函數(shù)有什么區(qū)別。
查看完整描述

1 回答

?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

這兩個功能有什么區(qū)別?


Go 編程語言規(guī)范

推遲聲明

“延遲”語句調用一個函數(shù),該函數(shù)的執(zhí)行被推遲到周圍函數(shù)返回的那一刻。

每次執(zhí)行“defer”語句時,調用的函數(shù)值和參數(shù)都會像往常一樣計算并重新保存,但不會調用實際函數(shù)。相反,延遲函數(shù)會在周圍函數(shù)返回之前立即被調用,順序與它們被延遲的順序相反。

如果延遲函數(shù)是一個函數(shù)文字,并且周圍的函數(shù)在文字范圍內命名了結果參數(shù),則延遲函數(shù)可以在返回結果參數(shù)之前訪問和修改結果參數(shù)。如果延遲函數(shù)有任何返回值,它們將在函數(shù)完成時被丟棄。


不同之處在于帶有命名結果參數(shù)的周圍函數(shù)

func?a()?(i?int)

與具有未命名結果參數(shù)的周圍函數(shù)

func?a()?int


查看完整回答
反對 回復 2023-05-22
  • 1 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號