Thanks for the explanation. It does look much better in proto3. I will see if it will be possible to switch to proto3.
2016-08-03 21:37 GMT+05:30 Ian Lance Taylor <[email protected]>: > On Wed, Aug 3, 2016 at 8:58 AM, Sankar <[email protected]> wrote: >> >> I have a .proto2 file, like: >> >> message s { >> optional double a = 1; >> } >> >> When I run protoc and generate the .pb.go file, it contains code like: >> >> type S struct { >> A *float64 `protobuf:"fixed64,1,opt,name=a" >> json:"a,omitempty"` >> XXX_unrecognized []byte `json:"-"` >> } >> >> Why is the A field here a pointer instead of a normal float64 ? > > Because proto2 records not only the value of each field, but also > whether the field is present or not. Using a pointer is how the Go > implementations indicates whether the field is present. > > This is better in proto3. If you can switch to proto3, do so. > > Ian -- Sankar P http://psankar.blogspot.com -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
