Files
bulma/escape/receiver_escape.go
T

32 lines
619 B
Go

package main
import "fmt"
type Person7 struct {
Name string
Age int
}
type Manager struct {
Person7 *Person7 // 关联Person指针
}
// GetPerson 返回关联的Person指针,触发逃逸
func (m *Manager) GetPerson() *Person7 {
return m.Person7 // Person指针逃逸
}
// createManager 返回Manager指针,触发逃逸
func createManager() *Manager {
m := &Manager{
Person7: &Person7{Name: "Manager Person", Age: 40}, // Person逃逸
}
return m // Manager指针逃逸
}
func main() {
manager := createManager()
person := manager.GetPerson()
fmt.Printf("方法接收者逃逸:%+v\n", *person)
}