[英]Pointers in golang
为什么这个:
obj := *g
return &obj, nil
不等于此:
return &(*g), nil
它不应该以相同的方式工作吗(返回指向带有g
struct数据的新内存区域的指针)?
在第一个中,通过声明obj分配新的内存区域。 在第二个中,您只需引用g处的值,即g。
我不相信这是不一样的。
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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.