Go使用GRPC

使用以下命令安装gRPC。

go get -u google.golang.org/grpc
会牵扯到翻墙:
可以用如下方式代替:
cd gopath/src/google.golang.org
git clone https://github.com/grpc/grpc-go.git
mv grpc-go groc 即可

安装Protocol Buffers v3

go get -u github.com/golang/protobuf/protoc-gen-go

proto安装使用

首先,您需要安装ProtocolBuffers 3.0 - 0- -3或更高版本。
mkdir tmp
cd tmp
git clone https://github.com/google/protobuf
cd protobuf
./autogen.sh
./configure
make
make check
sudo make install

然后下载如下包
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
go get -u github.com/golang/protobuf/protoc-gen-go

protoc --go_out=plugins=grpc:. route_guide.proto
protoc -I . --go_out=plugins=grpc:. ./hello.proto

proto语法

字段规则

repeated:标识字段可以重复任意次,类似数组
proto3不支持proto2中的required和optional

默认值

字符串类型默认为空字符串
字节类型默认为空字节
布尔类型默认false
数值类型默认为0值
enums类型默认为第一个定义的枚举值,必须是0

导入定义(import)

import "others.proto";
protocol buffer编译器会在 -I / --proto_path参数指定的目录中查找导入的文件,如果没有指定该参数,默认在当前目录中查找。

message 嵌套 可以使用.来访问子集

Map类型

map<key_type, value_type> map_field = N;
message Project {...}
map<string, Project> projects = 1;
键、值类型可以是内置的标量类型,也可以是自定义message类型
字段不支持repeated属性
不要依赖map类型的字段顺序

包(Packages)

在.proto文件中使用package声明包名,避免命名冲突	
在其他的消息格式定义中可以使用包名+消息名的方式来使用类型
Go 中:默认使用package名作为包名,除非指定了option go_package选项

基本规范

描述文件以.proto做为文件后缀,除结构定义外的语句以分号结尾
结构定义包括:message、service、enum
rpc方法定义结尾的分号可有可无	
Message命名采用驼峰命名方式,字段命名采用小写字母加下划线分隔方式
Enums类型名采用驼峰命名方式,字段命名采用大写字母加下划线分隔方式
Service与rpc方法名统一采用驼峰式命名

数据类型对比

.proto Go
double float64
float float32
int32 int32
int64 int64
uint32 uint32
uint64 uint64
sint32 int32
sint64 int64
fixed32 uint32
fixed64 uint64
sfixed32 int32
sfixed64 int64
bool bool
string string
bytes []byte

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值