第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將值類型浮點的現(xiàn)有字段更改為 protobuf 消息中的可選浮點數(shù)

將值類型浮點的現(xiàn)有字段更改為 protobuf 消息中的可選浮點數(shù)

Go
絕地?zé)o雙 2022-10-04 17:21:56
我有以下類型的消息message Foo {    string bar = 1;    float baz = 2;}將其轉(zhuǎn)換為以下內(nèi)容以在Go中使用是否有任何問題?message Foo {    string bar = 1;    optional float baz = 2;}在這種情況下,棄用和在原型中創(chuàng)建新字段的首選方法是否也是如此?
查看完整描述

3 回答

?
喵喵時光機

TA貢獻1846條經(jīng)驗 獲得超7個贊

取決于特定消息在代碼庫中的集成程度 - 含義

  1. 您是否將封送處理的二進制表示形式存儲在數(shù)據(jù)庫之類的位置

  2. 是使用您正在修改的消息的不同版本的代碼庫的不同部分 - 例如,Android / ios應(yīng)用程序的舊版本等

重點是,如果您使用消息結(jié)構(gòu)來取消marshal編碼數(shù)據(jù),這些數(shù)據(jù)不是用完全相同的消息結(jié)構(gòu)生成的,那么壞事就會發(fā)生。

文檔建議添加新元素以完全規(guī)避此類情況。如果這不是你想做的事情,請考慮上述幾點。


查看完整回答
反對 回復(fù) 2022-10-04
?
PIPIONE

TA貢獻1829條經(jīng)驗 獲得超9個贊

我建議你使用在谷歌.protobuf包中定義的浮點值類型。例如:

syntax = "proto3";


import "google/protobuf/wrappers.proto";


message Foo {

  string bar = 1;

  google.protobuf.FloatValue baz = 2;

}

將生成一個 pb 文件,其中包含以下內(nèi)容:



type Foo struct {

    state         protoimpl.MessageState

    sizeCache     protoimpl.SizeCache

    unknownFields protoimpl.UnknownFields


    Bar string                 `protobuf:"bytes,1,opt,name=bar,proto3" json:"bar,omitempty"`

    Baz *wrapperspb.FloatValue `protobuf:"bytes,2,opt,name=baz,proto3" json:"baz,omitempty"`

}



您可以按如下方式使用:


  f := Foo{

      Bar:           "Bar",

      Baz:           &wrapperspb.FloatValue{Value: float32(3)},

  }


  var floatValue float32 

  if f.Baz != nil {

      floatValue = f.Baz.GetValue()

  }


查看完整回答
反對 回復(fù) 2022-10-04
?
茅侃侃

TA貢獻1842條經(jīng)驗 獲得超22個贊

將使字段成為指針類型。所以在Go生成的代碼中,會變成,這當(dāng)然不是。optionaloptional float*float32float32


要棄用字段,請使用字段選項:[deprecated = true]


message Foo {

    string bar = 1;

    float baz = 2 [deprecated = true];

}

如果在 protobuf 架構(gòu)的后續(xù)版本中,您實際上從消息中完全刪除了該字段,則可能需要添加 ,其中 是已刪除字段的編號。reserved 22


message Foo {

    string bar = 1;

    reserved 2;

}

這有助于防止其他人或?qū)淼哪谖恢?2 中添加新字段。如果您有過時的客戶仍然期望位置2,則這與此相關(guān)。float


PS:從版本3.15開始支持Proto3中的菲德optional


查看完整回答
反對 回復(fù) 2022-10-04
  • 3 回答
  • 0 關(guān)注
  • 186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號