1 回答

TA貢獻1786條經(jīng)驗 獲得超11個贊
該文檔是錯誤的,如此處所述:https://github.com/golang/protobuf/issues/1336:
有關(guān) https://github.com/protocolbuffers/protobuf/blob/master/docs/field_presence.md#go-example 的文檔不正確。在 proto3 中使用“可選”可以生成字段,就像在 proto2 中一樣。
該文檔是錯誤的。生成的代碼中沒有方法。通過將字段與 進行比較來測試是否存在。
Has
nil
正確重寫這些示例:
// Field foo does not have presence.
// If field foo is not 0, set it to 0.
// If field foo is 0, set it to 1.
m := GetProto()
if m.Foo != 0 {
// "Clear" the field:
m.Foo = 0
} else {
// Default value: field may not have been present.
m.Foo = 1
}
// Field foo has presence.
// If foo is set, clear it.
// If foo is not set, set it to 1.
m := GetProto()
if m.Foo != nil {
// Clear the field:
m.Foo = nil
} else {
// Field is not present, so set it.
m.Foo = proto.Int32(1)
}
PR來修復(fù)該文檔:協(xié)議緩沖器/原型buff#8788
- 1 回答
- 0 關(guān)注
- 111 瀏覽
添加回答
舉報