我在.proto文件中有一个类型为fixed64
的字段。从fixed64 protobuf字段中读取int64 golang
我想读它作为一个Int64场:
score := int64(pb_obj.Score)
当我尝试编译线agove我收到错误消息cannot convert pb_obj.Score (type *uint64) to type int64
。我试图转换一个uint64,并得到了几乎相同的消息。
我在.proto文件中有一个类型为fixed64
的字段。从fixed64 protobuf字段中读取int64 golang
我想读它作为一个Int64场:
score := int64(pb_obj.Score)
当我尝试编译线agove我收到错误消息cannot convert pb_obj.Score (type *uint64) to type int64
。我试图转换一个uint64,并得到了几乎相同的消息。
pb_obj.Score
的类型似乎是*uint64
(指针uint64
),不uint64
。你只需要访问指针引用值:
score := int64(*pb_obj.Score)
(见*
前缀的差异)
基于编译错误,您正在使用uint64指针而不是uint64值。您可以通过直接使用*运算符引用值来获得所需的内容。我从来没有与protobuf合作过,所以我可能会离开,但这应该让你感动。这里有一个很好的参考,可以帮助golang pointers
是,* pb_obj.Score是罚款。并且将fixed64更改为int64也没有意义。如果分数总是正面,请在原始版本中使用uint64和fixed64。如果可以为负,则首选文件中的int64和sfixed64。 – lofcek