Ich bin finden Sie das Paket, generieren .proto Dateien aus Go-Quellcode: proteus (https://github.com/src-d/proteus)
Proteus/proʊtiəs/ist ein Werkzeug zur Erzeugung Protokoll puffert Version 3 kompatibel .proto Dateien von Ihrem Go structs, Typen und Funktionen.
Die Motivation hinter dieser Bibliothek besteht darin, Go als Wahrheitsquelle für Ihre Modelle zu verwenden und nicht umgekehrt den Go-Code aus einer .proto-Datei, die keinen idiomatischen Code generiert.
generieren protobuf Nachrichten
//proteus:generate
type User struct {
Model
Username string
}
type Model struct {
ID int
CreatedAt time.Time
}
diesem Beispiel wird die folgende protobuf Meldung.
message User {
int32 id = 1;
google.protobuf.Timestamp created_at = 2;
string username = 3;
}
Installieren
go get -v gopkg.in/src-d/proteus.v1/...
Anforderungen
Es gibt zwei Anforderungen für den vollständigen Prozess.
protoc binary installed on your path
go get -u github.com/gogo/protobuf/...
Nutzungs
Sie die Proto-Dateien erzeugen können, der Marschall/Abstellungs und der Rest von protobuf Sachen für Ihre Go-Typen, der RPC-Client und Server-Schnittstelle und die RPC-Server-Implementierung für Ihre Pakete . Das heißt, der ganze Prozess.
proteus -f /path/to/protos/folder \
-p my/go/package \
-p my/other/go/package
Sie können Proto-Dateien nur mithilfe des Befehlszeilenprogramms erstellen, das mit Proteus bereitgestellt wird.
Sie können auch nur gRPC-Server-Implementierungen für Ihre Pakete generieren.
proteus rpc -p my/go/package \
-p my/other/go/package
HINWEIS: Natürlich, wenn die Standardeinstellungen nicht Ihren Anforderungen entspricht, bis Proteus über Plugins erweiterbar ist, können Sie hacken zusammen Ihren eigenen Generator Befehl die zur Verfügung gestellten Komponenten. Schauen Sie sich die godoc-Dokumentation des Pakets an.
Das klingt wie ein Witz. Normalerweise wird aus Proto generiert und ich kann mir keinen sinnvollen Fall vorstellen, es auf den Kopf zu stellen.Für solch einen primitiven Fall ist das kein Problem, schreibe * .proto direkt. Und für kompliziertere Fälle (enums, oneof, ...) ist jedes Werkzeug nutzlos. – lofcek