package test import ( "encoding/json" "strings" "github.com/gogo/protobuf/proto" ) type T struct { Data string } func (gt *T) protoType() *ProtoType { return &ProtoType{ Field2: >.Data, } } func (gt T) Equal(other T) bool { return gt.protoType().Equal(other.protoType()) } func (gt *T) Size() int { proto := &ProtoType{ Field2: >.Data, } return proto.Size() } func NewPopulatedT(r randyThetest) *T { data := NewPopulatedProtoType(r, false).Field2 gt := &T{} if data != nil { gt.Data = *data } return gt } func (r T) Marshal() ([]byte, error) { return proto.Marshal(r.protoType()) } func (r *T) Unmarshal(data []byte) error { pr := &ProtoType{} err := proto.Unmarshal(data, pr) if err != nil { return err } if pr.Field2 != nil { r.Data = *pr.Field2 } return nil } func (gt T) MarshalJSON() ([]byte, error) { return json.Marshal(gt.Data) } func (gt *T) UnmarshalJSON(data []byte) error { var s string err := json.Unmarshal(data, &s) if err != nil { return err } *gt = T{Data: s} return nil } func (gt T) Compare(other T) int { return strings.Compare(gt.Data, other.Data) }