理解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