Go语言笔记|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安装使用 【Go语言笔记|Go使用GRPC】首先,您需要安装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 map_field = N; message Project {...} map 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

    推荐阅读