在Go语言中,闭包是一种可以访问其外部作用域变量的匿名函数。要在闭包中捕获一个int
值,你可以将该值作为参数传递给闭包,或者在闭包内部直接引用它。以下是两种常见的方法:
package main
import "fmt"
func main() {
num := 10
// 定义一个闭包,并将num作为参数传递
closure := func(n int) {
fmt.Println("捕获到的int值为:", n)
}
// 调用闭包并传入num
closure(num)
}
在这个例子中,闭包closure
接受一个int
类型的参数n
,并在内部打印这个值。当调用closure(num)
时,num
的值被传递给闭包,并在闭包内部被捕获和使用。
package main
import "fmt"
func main() {
num := 10
// 定义一个闭包,直接引用外部的num变量
closure := func() {
fmt.Println("捕获到的int值为:", num)
}
// 调用闭包
closure()
}
在这个例子中,闭包closure
没有参数,但它可以直接访问并使用其外部作用域中的num
变量。当调用closure()
时,闭包内部的代码会打印出num
的当前值。
例如:
package main
import "fmt"
func main() {
num := 10
capturedNum := num // 复制num的值到新变量capturedNum
closure := func() {
fmt.Println("捕获到的int值为:", capturedNum) // 捕获capturedNum的值
}
num = 20 // 修改原始的num变量
closure() // 输出仍然是10,因为闭包捕获的是capturedNum的值
}
在这个例子中,即使原始的num
变量被修改,闭包内部打印的仍然是闭包创建时capturedNum
的值。
领取专属 10元无门槛券
手把手带您无忧上云