首次提交:初始化项目代码
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
// 全局变量,存储Person指针
|
||||
var globalPerson *Person2
|
||||
|
||||
// 全局切片,存储Person指针
|
||||
var globalPersonSlice []*Person2
|
||||
|
||||
type Person2 struct {
|
||||
Name string
|
||||
Age int
|
||||
}
|
||||
|
||||
// storePerson 接收指针参数并返回,触发逃逸
|
||||
func storePerson(p *Person2) *Person2 {
|
||||
return p // 指针被返回,触发逃逸
|
||||
}
|
||||
|
||||
// addToGlobal 将指针存入全局变量,触发逃逸
|
||||
func addToGlobal() {
|
||||
p := &Person2{Name: "Bob", Age: 30}
|
||||
globalPerson = p // 存入全局变量,p逃逸
|
||||
}
|
||||
|
||||
// addToGlobalSlice 将指针存入全局切片,触发逃逸
|
||||
func addToGlobalSlice() {
|
||||
for i := 0; i < 3; i++ {
|
||||
p := &Person2{Name: fmt.Sprintf("Person%d", i), Age: 20 + i}
|
||||
globalPersonSlice = append(globalPersonSlice, p) // p逃逸至切片
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
p := &Person2{Name: "Charlie", Age: 28}
|
||||
storedP := storePerson(p)
|
||||
fmt.Printf("引用传递:%+v\n", *storedP)
|
||||
|
||||
addToGlobal()
|
||||
fmt.Printf("全局变量存储:%+v\n", *globalPerson)
|
||||
|
||||
addToGlobalSlice()
|
||||
fmt.Printf("全局切片存储:%d个Person\n", len(globalPersonSlice))
|
||||
}
|
||||
Reference in New Issue
Block a user