为了账号安全,请及时绑定邮箱和手机立即绑定

golang 中的指针

golang 中的指针

Go
Helenr 2023-04-04 17:14:08
为什么这个:obj := *g return &obj, nil不等于这个:return &(*g), nil它不应该以相同的方式工作吗(返回指向新内存区域的指针以及来自g结构的数据)?
查看完整描述

2 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

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



查看完整回答
反对 回复 2023-04-04
?
慕容森

TA贡献1853条经验 获得超18个赞

我不相信这是不一样的。


package main


import "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

}


查看完整回答
反对 回复 2023-04-04
  • 2 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信