结构体
io 包中定义了下面几个结构体:
- ByteReader
- ByteWriter
- RawReader
- Reader
- Writer
它们之间的关系是:
+---------------------------------------------------------+
| _ _ _ _ |
| | | | | (_) | |
| | | | |_ __ _| |_ ___ _ __ |
| | |/\| | '__| | __/ _ \ '__| |
| \ /\ / | | | || __/ | |
| \/ \/|_| |_|\__\___|_| |
| |
| +-----------------------------------------------------+ |
| | ______ _ _ _ _ _ | |
| | | ___ \ | | | | | | (_) | | |
| | | |_/ /_ _| |_ ___ | | | |_ __ _| |_ ___ _ __ | |
| | | ___ \ | | | __/ _ \| |/\| | '__| | __/ _ \ '__| | |
| | | |_/ / |_| | || __/\ /\ / | | | || __/ | | |
| | \____/ \__, |\__\___| \/ \/|_| |_|\__\___|_| | |
| | __/ | | |
| | |___/ | |
| +-----------------------------------------------------+ |
+---------------------------------------------------------+
+-------------------------------------------------------------+
| ______ _ |
| | ___ \ | | |
| | |_/ /___ __ _ __| | ___ _ __ |
| | // _ \/ _` |/ _` |/ _ \ '__| |
| | |\ \ __/ (_| | (_| | __/ | |
| \_| \_\___|\__,_|\__,_|\___|_| |
| |
| +---------------------------------------------------------+ |
| | ______ ______ _ | |
| | | ___ \ | ___ \ | | | |
| | | |_/ /__ ___ _| |_/ /___ __ _ __| | ___ _ __ | |
| | | // _` \ \ /\ / / // _ \/ _` |/ _` |/ _ \ '__| | |
| | | |\ \ (_| |\ V V /| |\ \ __/ (_| | (_| | __/ | | |
| | \_| \_\__,_| \_/\_/ \_| \_\___|\__,_|\__,_|\___|_| | |
| | +-----------------------------------------------------+ | |
| | |______ _ ______ _ | | |
| | || ___ \ | | | ___ \ | | | | |
| | || |_/ /_ _| |_ ___| |_/ /___ __ _ __| | ___ _ __ | | |
| | || ___ \ | | | __/ _ \ // _ \/ _` |/ _` |/ _ \ '__|| | |
| | || |_/ / |_| | || __/ |\ \ __/ (_| | (_| | __/ | | | |
| | |\____/ \__, |\__\___\_| \_\___|\__,_|\__,_|\___|_| | | |
| | | __/ | | | |
| | | |___/ | | |
| | +-----------------------------------------------------+ | |
| +---------------------------------------------------------+ |
+-------------------------------------------------------------+
其中 ByteReader
和 ByteWriter
是用于对字节序列的读写,它本身跟 hprose 序列化无关,可以单独作为字节序列读写的工具来用,因为是读写分离的,所以性能上要比 bytes
包下面的那几个用于对字节序列化读写的结构体高效一点点,但是功能也少一些。
RawReader
用于读取 hprose 的原始数据,用户通常不需要使用该结构体。
Writer
和 Reader
用于对数据进行 hprose 的细粒度序列化和反序列化操作。