Supported Types
Fory Go supports a wide range of Go types for serialization. This guide covers all supported types and their cross-language mappings.
Primitive Types
| Go Type | Fory TypeId | Encoding | Notes |
|---|---|---|---|
bool | BOOL (1) | 1 byte | |
int8 | INT8 (2) | 1 byte, signed | |
int16 | INT16 (3) | 2 bytes, signed | Little-endian |
int32 | INT32 (4) | Varint | Variable-length encoding |
int64 | INT64 (6) | Varint | Variable-length encoding |
int | INT32/INT64 | Varint | Platform-dependent (32 or 64 bit) |
uint8 / byte | UINT8 (9) | 1 byte, unsigned | |
uint16 | UINT16 (10) | 2 bytes, unsigned | Little-endian |
uint32 | UINT32 (11) | Varuint | Variable-length encoding |
uint64 | UINT64 (13) | Varuint | Variable-length encoding |
float32 | FLOAT32 (17) | 4 bytes | IEEE 754 |
float64 | FLOAT64 (18) | 8 bytes | IEEE 754 |
string | STRING (19) | Length-prefixed UTF-8 |
Integer Encoding
Fory uses variable-length integer encoding (varint) for better compression:
- Small values use fewer bytes
- Negative values use ZigZag encoding
- Platform
intmaps toint32on 32-bit,int64on 64-bit systems
f := fory.New()
// All integer types supported
var i8 int8 = 127
var i16 int16 = 32767
var i32 int32 = 2147483647
var i64 int64 = 9223372036854775807
data, _ := f.Serialize(i64) // Uses varint encoding