thrift IDL 基本类型和实践(二)- Container (容器)

1,284 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

简介

Thrift 通过 IDL(Interface Definition Language)定义通用的服务接口,通过 Thrift 提供的编译器,将 IDL 编译为不同语言的代码,通过这个方式实现跨语言的功能。

我写的这个系列的文章,参考了两篇比较好的文章,从实践的角度看下 Thrift IDL 的编写,本文将会介绍容器的概念和使用

文章系列

Container (容器)

有三种可用的容器类型:

  • list<t>:元素类型为t的有序列表,允许重复。类似于java中的ArrayList,类似js中的Array。
  • set<t>:元素类型为t的无序表,不允许重复。类似于java中的HashSet,类似js中的Set。
  • map<t, t>:键类型为t,值类型为t的键值对,键不允许重复。类似于java中的HashMap,类似js中的Map。

我们常用的接口返回值会是 list 类型,比如需要返回一个这样的列表

[
    {
        id: 1,
        name: 'demo1'
    },
    {
        id: 2,
        name: 'demo2'
    }
]

对应的 IDL 就可以这样定义

struct ExamplePackage {
  1: required int32 id;
  2: required string name
}

struct ExampleResponse {
  1:required string message;
  2:optional list<ExamplePackage> data;
}

set 和 map 在实践中还没有大量的使用到,后续使用后再补充上~