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);
}
相关推荐
im_AMBER1 小时前
Vite + React 项目启动深度踩坑指南
前端·学习·react.js·前端框架
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [kernel]kthread
linux·笔记·学习
码上淘金5 小时前
在 YAML 中如何将 JSON 对象作为字符串整体赋值?——兼谈 Go Template 中的 fromJson 使用
java·golang·json
河铃旅鹿5 小时前
Android开发-java版:布局
android·笔记·学习
奋斗的牛马5 小时前
FPGA--zynq学习 PS与PL交互(二) HP接口
单片机·嵌入式硬件·学习·fpga开发·信息与通信
华清远见成都中心5 小时前
分享一个驱动开发工程师学习路线图
驱动开发·学习
im_AMBER6 小时前
React 18
前端·javascript·笔记·学习·react.js·前端框架
d111111111d8 小时前
STM32中为什么会有APB1和APB2两个外设有什么区别
笔记·stm32·单片机·嵌入式硬件·学习
化作星辰9 小时前
深度学习_神经网络中最常用的学习率优化算法
深度学习·神经网络·学习
71-39 小时前
C语言练习题——判断水仙花数(0-100000)
c语言·笔记·学习