理解defer對GO
在此示例中,我們將其稱為c函數並將其傳遞為值0。但是,當我們打印結果時,我們得到0而不是預期1。這是因為我被聲明為函數的輸入參數。一旦執行返回語句,調用了延期函數,但是增量對返回值沒有影響。
func c1(int) defer func(){i}()() 返回i } func main(){ fmt.println(c1())//打印1 }
func c(i int) int { defer func() { i }() return i } func main() { fmt.Println(c(0)) // Prints 0 }在此示例中,返回語句在調用延期函數之前將i明確設置為2。結果,延遲函數會增加i的值,返回值變為3。
命名結果參數的冪
這些示例的關鍵要點是輸入參數和命名結果參數之間的區別。輸入參數傳遞到函數中,而命名結果參數是保存函數返回值的變量。執行返回語句後,遞送函數可以修改命名的結果參數,但它們不能影響輸入參數。免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3