golang 中的指针

为什么这个:

obj := *g
return &obj, nil

不等于这个:

return &(*g), nil

它不应该以相同的方式工作吗(返回指向新内存区域的指针以及来自g结构的数据)?


Helenr
浏览 109回答 2
2回答

慕尼黑的夜晚无繁华

在第一个中,您通过声明 obj 来分配一个新的内存区域。在第二种情况下,您只需引用 g 处的值,即 g。

慕容森

我不相信这是不一样的。package mainimport "fmt"type G struct {}func foo(g *G) (*G, error) {  return &(*g), nil}func bar(g *G) (*G, error) {  obj := (*g)  return &obj, nil}func main() {  g := &G{}  a, _ := foo(g)  b, _ := bar(g)  fmt.Printf("a: %p, b: %p\n", a, b)  // gives the same pointer value}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go