32 lines
619 B
Go
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)
|
|
}
|