为什么要求你添加&在变量名之前?

时间:2013-03-19 18:32:15

标签: go

以下是我要查看的代码段:

var t txn
t.c = c
err := c.read(&t.req)

为什么你要写& t而不仅仅是t.req?

1 个答案:

答案 0 :(得分:6)

您并不总是必须使用&符号。在您的示例中,它取决于c.read的签名,该签名要求指针(*在类型之前,例如*MyStruct)。 &返回值的地址,为您指定一个值,因此&t.req满足read的签名。

如需进一步阅读,请参阅FAQ on pointersAddress operators上的规范。