我需要使用 Protocol Buffers 序列化从 Google Drive drives:list 方法接收的 JSON 消息,并将它们写入 BigQuery Storage Write API (GRPC)。这适用于除时间戳之外的所有字段类型。我终生无法生成包含时间戳的 go 类。首先,我正在关注此文档,尽管我也尝试了我可以在网上找到的所有内容,包括在 stackoverflow 上的此处,但都无济于事。
在 MacOS 12.6 上,protoc 从此zip安装到 /usr/local/bin,zip 中包含的内容安装到 /usr/local/include。
这是我需要创建一个类的 drives.proto 文件:
syntax = "proto3";
option go_package = "./driveBuffers";
import "google/protobuf/timestamp.proto";
message Drive {
string id =1;
string name =2;
string colorRgb = 3;
string backgroundImageLink =4;
bool hidden = 5;
string orgUnitId = 6;
timestamp createdTime = 7;
message restrictions {
bool adminManagedRestrictions = 1;
bool domainUsersOnly = 2;
bool copyRequiresWriterPermission = 3;
bool driveMembersOnly = 4;
}
}
如果我删除时间戳类型的字段,该工具会创建一个名为 ./driveBuffers/drives.pb.go 的文件。使用时间戳类型,会抛出这个错误:
% protoc --go_out=. -I ./ -I /usr/local/include/ drives.proto
drives.proto:11:3: "timestamp" is not defined.
慕慕森
相关分类