Вопрос по названию. Пытался скомпилировать 2 способами gogoproto и golangprotobuf. * 1001 *
Написал тесты для обоих, и оба не будут маршалировать.
msg.proto
syntax = "proto3";
import "google/protobuf/timestamp.proto";
package msg;
message Message {
string Name = 1;
google.protobuf.Timestamp TimeStamp = 2;
}
demo_test. go
package msg
import (
"testing"
"time"
// gogo "github.com/gogo/protobuf/proto"
"github.com/golang/protobuf/proto"
"github.com/golang/protobuf/ptypes/timestamp"
)
var msg = Message{
Name: "demo",
TimeStamp: ×tamp.Timestamp{Seconds: int64(time.Now().Second())},
}
//func TestGogoMessage_Marshal(t *testing.T) {
// myBytes, err := gogo.Marshal(&msg)
// if err != nil {
// t.Fail()
// }
// _ = myBytes
//}
func TestProtoMessage_Marshal(t *testing.T) {
myBytes, err := proto.Marshal(&msg)
if err != nil {
t.Fail()
}
_ = myBytes
}
скомпилировано с:
protoc --gofast_out=. ./demo/msg.proto
работает, но работает тест:
# github.com/.../demo
package github.com/.../demo (test)
imports github.com/gogo/protobuf/proto: cannot find package "." in:
/Users/.../vendor/github.com/gogo/protobuf/proto
protoc --go_out=. ./demo/msg.proto
работает, но работает тест:
# github.com/.../demo [github.com/.../demo.test]
./msg.pb.go:127:28: m.TimeStamp.MarshalToSizedBuffer undefined (type *timestamp.Timestamp has no field or method MarshalToSizedBuffer)
./msg.pb.go:169:18: m.TimeStamp.Size undefined (type *timestamp.Timestamp has no field or method Size)
./msg.pb.go:277:25: m.TimeStamp.Unmarshal undefined (type *timestamp.Timestamp has no field or method Unmarshal)