我正在使用微框架开发我的新项目,并且我已经完成了 GRPC 工作。但是现在,我需要编写与前端交互的网关。我真的不想写重复的代码,我在pb.go文件中找到了一些代码。
代码定义了一些结构和初始化函数。如下所示:
type AuthLoginReq struct {
Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func init() {
proto.RegisterType((*AuthLoginReq)(nil), "device.info.provider.service.AuthLoginReq")
}
同时,我发现这篇文章有没有办法从字符串创建结构的实例?.
幸运的是。pb 文件已经为我定义了它,但是 protoc 自动生成文件定义为 nil 指针(*AuthLoginReq)(nil)。
api.go
qiniuType := proto.MessageType("device.info.provider.service.AuthLoginReq")
pbValue := reflect.New(qiniuType)
pbStruct := pbValue.Elem().Interface()
当我改变 pbSturct 并没有真正改变,因为是 nil 指针
ctx.ShouldBind(&pbStruct)
pbStruct已经是变化了。但pbValue不是改变。
我该如何改变pbValue?