繁体   English   中英

Golang中的指针

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM