为什么这个:obj := *g
return &obj, nil不等于这个:return &(*g), nil它不应该以相同的方式工作吗(返回指向新内存区域的指针以及来自g结构的数据)?
2 回答
慕容森
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
}
- 2 回答
- 0 关注
- 108 浏览
添加回答
举报
0/150
提交
取消