之前用 C++的话,引用不能指向栈里的数据。
但是在 Go 里面有 gc ,而且从函数返回后,还能继续使用指向里面的指针(原理是啥?在堆里面给他分配了一块空间,再把数据复制过去?)
创建结构体是直接创建还是用 new 好?或者说他们分别适用于什么场景?
像如下的代码,创建对象之后使用基本感受不到有啥区别( Go 中函数里面创建的变量也是在栈里?唯一可能会担心栈里面的数据太多会达到栈的大小限制?)
type Person struct {
Name string
}
func main() {
p1 := &Person{}
p2 := new(Person)
p1.Name = "p1"
p2.Name = "p2"
fmt.Println(p1.Name)
fmt.Println(p2.Name)
}