syntax = "proto3"; package proto; // 定义 Go 包名为 demo1, 生成的 Go 代码包名为 demo1 option go_package = "demo1/proto;proto"; import "google/protobuf/empty.proto"; import "google/protobuf/any.proto"; enum Sex { Male = 0; Female = 1; Unknown = 2; } message Code { string code = 1; } // 定义 LoginRequest 消息, 包含 username, password 两个字段 message LoginRequest { string username = 1; string password = 2; google.protobuf.Any other = 3; } // 定义 RegisterRequest 消息, 包含 username, password, email, mobile 四个字段 message RegisterRequest { string username = 1; string password = 2; string email = 3; string mobile = 4; Sex sex = 5; repeated string hobbies = 6; // 以下字段为预留字段, 不参与序列化和反序列化 reserved "city", "money"; } // 定义 Response 消息, 包含 code, msg, data 三个字段 // 其中 data 字段使用 oneof 关键字, 表示 data 字段只能有一个字段被赋值 message Response { int32 code = 1; string msg = 2; oneof data { string token = 3; string message = 4; } map info = 5; } // 定义 User 服务 service User { // 登录服务 rpc Login(LoginRequest) returns (Response); // 注册服务 rpc Register(RegisterRequest) returns (Response); // 获取用户信息服务 rpc GetUserInfo(google.protobuf.Empty) returns (Response); }