package main import "fmt" type Person4 struct { Name string Age int } // closureEscape 返回闭包,捕获的变量逃逸 func closureEscape() func() *Person4 { p := &Person4{Name: "Closure Person", Age: 30} // p 逃逸至堆 return func() *Person4 { return p // 闭包引用p,延长其生命周期 } } // goroutineClosure 协程中使用闭包,捕获变量逃逸 func goroutineClosure() { x := 100 // x 逃逸至堆 go func() { fmt.Printf("协程闭包捕获:%d\n", x) }() } func main() { closureFunc := closureEscape() p := closureFunc() fmt.Printf("闭包捕获变量:%+v\n", *p) goroutineClosure() }