我是一个长期使用 Go 的 python 用户,我仍然有一些问题需要重新获得管理打字和指针的基本技能。
我有一个程序从 RabbitMq 接收事件(但无论我们在谈论什么传输,问题都是一样的)。其中一个甚至包含一个类型为 int 的可选字段 F1。
我的理解是,如果该字段在事件中不存在,那么 go 会将其默认为 0。但是 0 是该字段的有效值,我需要区分值为 0 的情况和值为 0 的情况未定义。
我想将我的字段设为 *int 以实际将“nil”作为值。但是当接收到一个事件时,F1 会被设置为实际指向的值,还是来自发送者的值地址?我还有其他选择吗?
小智 5
在大多数情况下,使用指向值的指针是有意义的。例如
type RabbitMessage struct {
F1 *int `json:"f1"`
}
Run Code Online (Sandbox Code Playgroud)
这将如何工作的确切细节取决于您在通过 RabbitMQ 发送数据之前如何序列化数据。如果您使用的是 JSON,那么这应该没有问题,因为空值和省略的值都将在 Go 中表示为nil. 提供值后,它将被设置为您期望的值(它不会使用来自发件人的地址)。
| 归档时间: |
|
| 查看次数: |
38 次 |
| 最近记录: |