2016-02-01 34 views
1

我在.proto文件中有一个类型为fixed64的字段。从fixed64 protobuf字段中读取int64 golang

我想读它作为一个Int64场:

score := int64(pb_obj.Score) 

当我尝试编译线agove我收到错误消息cannot convert pb_obj.Score (type *uint64) to type int64。我试图转换一个uint64,并得到了几乎相同的消息。

+0

是,* pb_obj.Score是罚款。并且将fixed64更改为int64也没有意义。如果分数总是正面,请在原始版本中使用uint64和fixed64。如果可以为负,则首选文件中的int64和sfixed64。 – lofcek

回答

3

pb_obj.Score的类型似乎是*uint64(指针uint64),不uint64。你只需要访问指针引用值:

score := int64(*pb_obj.Score) 

(见*前缀的差异)

2

基于编译错误,您正在使用uint64指针而不是uint64值。您可以通过直接使用*运算符引用值来获得所需的内容。我从来没有与protobuf合作过,所以我可能会离开,但这应该让你感动。这里有一个很好的参考,可以帮助golang pointers