如下函數:
package main
import "fmt"
func f() (ret int) {
defer func() {
ret++
}()
return ret
}
func main() {
fmt.Println(f())
}
在函數f中,return處初始化了返回值ret爲1,最後執行匿名函數時改變返回值ret使其+1,返回值爲2,則最後打印結果爲2。
做一點改變
package main
import "fmt"
func f() (ret int) {
defer func() {
ret++
}()
return
}
func main() {
fmt.Println(f())
}
改變的使f函數的return處,這樣ret沒有被顯式始化,則ret默認爲0,在匿名函數中+1,返回值爲1,最後打印結果是1