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

标签 go

这是我正在查看的片段:

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

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

最佳答案

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

要进一步阅读,请参阅 FAQ on pointersAddress operators 上的规范.

关于go - 为什么 go 要求你在变量名前加 &?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15507689/

相关文章:

ide - LiteIDE 没有自动完成

go - 例程、 channel 和无限循环

sockets - Google Go Lang - 获取 net/http 的套接字 ID/fd 以与 syscall.Bind 一起使用

xml - 如何从不在重复项中使用结束标记的嵌套 xml 中获取数据?

找不到 godoc 命令

unit-testing - 在 go 中构建单个测试

Go Golang - 嵌入类型和 "len/range"

amazon-web-services - Golang从S3读取固定宽度的文本文件

json - 如何仅使用消息描述符将 protobuf 线格式转换为 JSON?

go - 连接 []byte 和哈希