02.proto示例

syntax = "proto3"; //在最上面定义使用的是proto3
package cars; //定义本文件的package名
option go_package = "trip/proto;tripPb"; //定义生成go文件的package路径,tripPb相当于生成包的别名

//定义一个消息类型,类似go的struct
message Location { 
  double lat = 1; //定义浮点数类型,字段名lat,`=1`代表顺序排在第一个
  double lon = 2;
}

message Trip{
  string            start          = 1;
  string            end            = 2;
  int64             duration_sec   = 3;
  int64             fee_cent       = 4;
  Location          start_pos      = 5; //引用上面定义的message类型,字段名start_pos,`=5`代表顺序排在第五个
  Location          end_pos        = 6; //字段名end_pos,生成go代码时会使用驼峰规则
  repeated Location path_locations = 7; //repeated定义为复合类型,类似go的slice或php的数组
  TripStatus        status         = 8; //引用下面的枚举类型,代表状态
}

//定义枚举类型
enum TripStatus { 
  IS_NOT_SPECIFIED = 0;
  NOT_START        = 1;
  IN_PROGRESS      = 2;
  FINISHED         = 3;
  PAID             = 4;
  OVER             = 5;
}

message GetTripRequest {
  string id = 1;
}

message GetTripResponse{
  string id   = 1;
  Trip   trip = 2;
}

//定义GRPC的服务端和客户端
service TripService {
  //定义服务接口GetTrip,接收参数为 GetTripRequest,返回为GetTripResponse
  rpc GetTrip (GetTripRequest) returns (GetTripResponse);
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容