2016-02-01 38 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