30 lines
543 B
Go
30 lines
543 B
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
type Person8 struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
// noEscape 返回值类型,不逃逸
|
|
func noEscape() Person8 {
|
|
p := Person8{Name: "No Escape", Age: 25}
|
|
return p // 值拷贝,生命周期局限于函数内
|
|
}
|
|
|
|
// localVar 局部变量,未被外部引用,不逃逸
|
|
func localVar() {
|
|
x := 100
|
|
y := "hello"
|
|
p := Person8{Name: "Local", Age: 30}
|
|
fmt.Printf("局部变量不逃逸:x=%d, y=%s, p=%+v\n", x, y, p)
|
|
}
|
|
|
|
func main() {
|
|
p := noEscape()
|
|
fmt.Printf("返回值不逃逸:%+v\n", p)
|
|
|
|
localVar()
|
|
}
|