go下的Prototype学习笔记

本博文讲解prototype的学习笔记,内容包含了syntax、option go_package、message、service进行讲解,举例了常见写法。

文章目录

  • [1.syntax 声明语法版本](#1.syntax 声明语法版本)
  • [2.package 给当前的proto分配包名称](#2.package 给当前的proto分配包名称)
  • 3.option
  • 4.message
    • [4.1 切片数组](#4.1 切片数组)
    • [4.2 map](#4.2 map)
    • [4.3 类型嵌套](#4.3 类型嵌套)
  • [5. 消息定义](#5. 消息定义)
go 复制代码
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 声明语法版本

go 复制代码
syntax = "proto3"; 

2.package 给当前的proto分配包名称

go 复制代码
package person;

3.option

go 复制代码
option go_package = "/projectRPCTest3/pb/person;person";

影响到实际效果是:

  • Go 包的路径:/projectRPCTest3/pb/person
  • Go 包名:person

4.message

go 复制代码
message PersonRes{
    string name = 1;
    int32 age = 2;
}

4.1 切片数组

go 复制代码
    repeated string hobbies = 3;  // 表示多个字符串
    repeated int32 scores = 4;    // 表示多个整数

4.2 map

go 复制代码
 map<string, int32> scores = 3;  // 例如,保存各科成绩

4.3 类型嵌套

go 复制代码
Message User {
	int32 id = 1;
	string name = 2;
}
Message Student{
	int32 id = 1;
	User user = 2;
	int32 score = 3;
}

5. 消息定义

go 复制代码
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 小时前
Go AI Agent 实战 03|Token、上下文窗口与模型调用成本
java·人工智能·golang
xhyu611 小时前
【学习笔记】图像质量评估方法 (5.生成图像是否符合用户要求)
笔记·学习·计算机视觉
卿卿的产品经理日记3 小时前
【AI产品经理实战】Day 38|try-except 踩坑实录:报错是数据
人工智能·笔记·python·学习·产品经理
keyipatience3 小时前
TypeScript学习(1)
前端·javascript·学习·typescript·html·css3
lazy H4 小时前
【计算机网络】第 2 篇:一条数据如何穿过网络?彻底理解数据封装与解封装
网络·经验分享·后端·学习·计算机网络
紧跟先前的步伐4 小时前
Go AI Agent 实战 02|大语言模型(LLM)到底是怎么工作的
人工智能·语言模型·golang
我命由我123454 小时前
软件工程概念 - 可插拔性
java·后端·学习·java-ee·系统架构·软件工程·学习方法
kkkkkkkkkk_Z5 小时前
新手自学嵌入式 | 学习日记:I2C总线协议、时序分析、读写流程与代码实现
学习
鬼手点金7 小时前
构建有效 Agent 的核心原则
java·人工智能·git·学习·自动化
姜九笙5618 小时前
python学习---归来仍是新人
java·python·学习