目录
0. Go简介
Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。
对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。
它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。
1. 基本语法
1.1 基础语法
1.2 书单
《Go语言实践》
2. go-mod
2.1 Module
go-Modules简明教程
Go Modules 是 Go 1.11 版本之后引入的,Go 1.11 之前使用 $GOPATH 机制。Go Modules 可以算作是较为完善的包管理工具。
2.2 go-mod下载安装
2.3 Goland配置
3. go单元测试
执行当前文件下面的所有单测文件
go test -gcflags=all=-l
PS: 可以配置一下goland中的git
使用命令更加的方便
4. protobuf(结构化数据存储格式)
protobuf 即 Protocol Buffers,是一种轻便高效的结构化数据存储格式,与语言、平台无关,可扩展可序列化。protobuf 性能和效率大幅度优于 JSON、XML 等其他的结构化数据格式。protobuf 是以二进制方式存储的,占用空间小,但也带来了可读性差的缺点。protobuf 在通信协议和数据存储等领域应用广泛。例如著名的分布式缓存工具 Memcached 的 Go 语言版本groupcache 就使用了 protobuf 作为其 RPC 数据格式。
4.1 安装
protoc 安装: Protobuf Releases 下载。
protoc-gen-go,这个工具用来将 .proto
文件转换为 Golang 代码。
4.2 消息类型-message
repeated | 字段可重复,即用来表示 Go 语言中的数组类型。 |
---|---|
rese | 字段/标识符保留(reserved),加载老版本的数据时,不会造成数据冲突, |
proto类型 | go类型 | 备注 | proto类型 | go类型 | 备注 |
---|---|---|---|---|---|
double | float64 | float | float32 | ||
int32 | int32 | int64 | int64 | ||
uint32 | uint32 | uint64 | uint64 | ||
sint32 | int32 | 适合负数 | sint64 | int64 | 适合负数 |
fixed32 | uint32 | 固长编码,适合大于2^28的值 | fixed64 | uint64 | 固长编码,适合大于2^56的值 |
sfixed32 | int32 | 固长编码 | sfixed64 | int64 | 固长编码 |
bool | bool | string | string | UTF8 编码,长度不超过 2^32 | |
bytes | []byte | 任意字节序列,长度不超过 2^32 |
enum | 枚举类型 |
---|---|
google.protobuf.Any | 任何类型 |
oneof | 可以内嵌 |
map | go语言中的映射 |
4.3 服务类型-service
可以在 .proto 文件中定义 RPC 服务接口
syntax = "proto3";
package main;
// this is a comment
message StudentRequest {
string name = 1;
bool male = 2;
repeated int32 scores = 3;
}
message StudentResponse {
string name = 1;
bool male = 2;
repeated int32 scores = 3;
}
service SearchService {
rpc Search (StudentRequest) returns (StudentResponse);
}
5. RPC
远程过程调用(英语:Remote Procedure Call,缩写为 RPC)是一个计算机通信协议