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 <i...@golang.org>: > On Wed, Aug 3, 2016 at 8:58 AM, Sankar <sankar.curios...@gmail.com> 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 golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.