1. thrift 安装
下载地址:https://dlcdn.apache.org/thrift/0.16.0/
下载之后加入到环境变量中,检测是否可用
thrift --version
2. thrift基础语法
2.1 支持的基础类型
- byte: 有符号字节
- i16: 16位有符号整数
- i32: 32位有符号整数
- i64: 64位有符号整数
- double: 64位浮点数
- string: 字符串
- bool: 布尔类型
- binary: Blob 类型 也就是[]byte
2.2 支持的容器类型
- list: 一系列由T类型的数据组成的有序列表,元素可以重复;
- set: 一系列由T类型的数据组成的无序集合,元素不可重复;
- map: 一个字典结构
// 容器类型使用
struct ListResp {
1: list<User> results, // 集合有序,可重复
2: map<string, User> userInfo, // map无序
3: set<i32> userIds, // 即可无序,不可重复
}
2.3 字段修饰
- optional:表示该字段可以为空 ,为空时则不会序列化(不写默认就是这个)
- required: 表示该字段不能为空
struct User{
1: required string name, //该字段必须填写
2: optional i32 age = 0; // 默认值为0
3: bool gender // 字段默认类型为optional
}
3. Go简单使用
namespace go user
// 定义结构体
struct User{
1: string username;
2: i64 age;
}
// 容器类型使用
struct ListResp {
1: list<User> results,
2: map<string, User> userInfo,
}
// 定义service
service UserService{
User Login(1:string username, 2:string password)
ListResp List(1:ListReq req)
}
// 定义常量
const i32 MAX_RETRIES_TIME = 10;
// 定义枚举
enum Gender {
MALE,
FEMALE
}
// 定义别名
typedef i32 int
typedef i64 long
生成
thrift -r -gen go user.thrift
会生成一个 gen-go
的目录 里面就是我们生成好的代码