// agent.proto
message Agent {
Permission permission = 1;
google.protobuf.Timestamp born_time = 2;
message Permission {
Type type = 1;
enum Type {
KILLNONE = 0;
KILLALL = 1;
DANCE = 2;
}
}
}
然后将 SQL 行扫描到代理 protobuf 结构中:
// main.go
var a proto.Agent
.....
... row.Scan(&a.Permission.Type,...)
该权限类型存储value = 0
为默认类型的简单 MariaDB INT()。所以,我不能直接扫描它。因此Type int32
,在尝试将临时结构字段映射到 protobuf 结构之后,我在哪里创建了临时结构并将行扫描到该临时结构中,但没有运气。当我想将 MariaDB 字符串值扫描到 []byte 类型字段时,我遇到了类似的问题,但我用我的 temp struct 解决了这个问题[]byte(tmp.UUID)
。
当使用非标准 protobuf 字段类型时,将数据库 ROW(单行)扫描到 protubuf 消息中的常见模式是什么?
编辑:是否应该有一些额外的0
价值处理?