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

loy*_*low 1 go

这是我正在看的片段:

var t txn
t.c = c
err := c.read(&t.req)
Run Code Online (Sandbox Code Playgroud)

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

Tho*_*ler 6

您并不总是必须使用&符号.在你的例子中,它取决于c.read的签名,它要求指针(*在类型之前,例如*MyStruct).&返回一个值的地址,给你一个指向它的指针,这样就&t.req满足了read的签名.

有关详细信息,请参阅指针常见问题解答地址运算符规范.