返回指向本地结构的指针

我看到一些代码示例的结构如下所示:

type point struct { x, y int } func newPoint() *point { return &point{10, 20} } 

我有C + +背景,这似乎对我来说是错误的。 这种结构的语义是什么? 是新的点分配在堆栈或堆?

去执行指针逃脱分析。 如果指针转义本地堆栈,在这种情况下,它将被分配到堆上。 如果它不逃避本地函数,编译器可以自由地将它分配到堆栈上(虽然它不作任何保证;它取决于指针转义分析是否可以certificate指针保持在本地函数中)。

“Golang”文档指出,返回一个指向局部variables的指针是完全合法的。“ 当我在这里读到

https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/EYUuead0LsY

我看起来像编译器看到你返回的地址,只是让你在堆上。 这是Go的常用成语。