Я не уверен, что это не то же самое.
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
}
Попробуйте здесь