本博文讲解prototype的学习笔记,内容包含了syntax、option go_package、message、service进行讲解,举例了常见写法。
 
文章目录
syntax = "proto3"; // 声明编译器用的是prototype3
package person;
option go_package="/projectRPCTest3/pb/person;person";
message PersonReq{
    string name =1;
    int32 age = 2;
}
message PersonRes{
    string name = 1;
    int32 age = 2;
}
service SearchService {
    rpc Search(PersonReq) returns (PersonRes);
    rpc SearchIn(stream PersonReq) returns(PersonRes);
    rpc SearchOut(PersonReq) returns (stream PersonRes);
    rpc SearchIO(stream PersonReq) returns (stream PersonRes);
}
 
1.syntax 声明语法版本
syntax = "proto3"; 
 
2.package 给当前的proto分配包名称
package person;
 
3.option
option go_package = "/projectRPCTest3/pb/person;person";
 
影响到实际效果是:
- Go 包的路径:
/projectRPCTest3/pb/person - Go 包名:
person 
4.message
message PersonRes{
    string name = 1;
    int32 age = 2;
}
 
4.1 切片数组
    repeated string hobbies = 3;  // 表示多个字符串
    repeated int32 scores = 4;    // 表示多个整数
 
4.2 map
 map<string, int32> scores = 3;  // 例如,保存各科成绩
 
4.3 类型嵌套
Message User {
	int32 id = 1;
	string name = 2;
}
Message Student{
	int32 id = 1;
	User user = 2;
	int32 score = 3;
}
 
5. 消息定义
service SearchService {
    rpc Search(PersonReq) returns (PersonRes);
    rpc SearchIn(stream PersonReq) returns(PersonRes);
    rpc SearchOut(PersonReq) returns (stream PersonRes);
    rpc SearchIO(stream PersonReq) returns (stream PersonRes);
}










