这是 Golang 中的一个函数,它使用 defer 来改变函数 c() 的命名返回值。
package main
import "fmt"
func c() (i int) {
defer func() { }()
defer fmt.Println("our i is", i)
return 45
}
func main() {
fmt.Println(c())
}
程序的输出是:
我们的 i 是 0
45
更改代码中的匿名 func()
func c() (i int) {
defer func() { i = 1 }()
defer fmt.Println("our i is", i)
return 45
}
func main() {
fmt.Println(c())
}
这导致输出:
我们的 i 是 0
1
如果没有其他值被放入 i 中,似乎返回值 45 会自动复制到 i 。但我不是 100% 确定这是否是输出的确切原因
浮云间
相关分类