2 回答
TA贡献1851条经验 获得超4个赞
Go是一个具有非公共字段的time.Time结构,不能直接通过协议缓冲区发送。
相反,将任何time.Time值转换为 google 的 protobuf 时间类型。)
例如,在您的.proto文件中:
syntax = "proto3";
import "google/protobuf/timestamp.proto";
message MyData {
google.protobuf.Timestamp updated = 1;
google.protobuf.Timestamp created = 2;
}
在你的代码中:
import (
"time"
"github.com/golang/protobuf/ptypes"
)
// ...
updatedTime := time.Now()
updatedProto, err := ptypes.TimestampProto(updatedTime)
// ...
mydate := &pb.MyData{
updated: updatedProto,
}
TA贡献1864条经验 获得超6个赞
正如你拥有的那样
*res.CurentTime = time.Now()
将首先取消引用res.CurentTime(这就是*此处所做的),如果是nil,将立即出现恐慌。之后发生什么并不重要。相反,您需要分配一个指针,而不是为现有的 ( nil) 指针分配新值:
now := time.Now() res.CurentTime = &now
- 2 回答
- 0 关注
- 267 浏览
添加回答
举报
