我在.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