func serializeByFlatBuffers(builder *flatbuffers.Builder, cg *ColorGroup) []byte { builder.Reset() //prepare data name := builder.CreateString(cg.Name) //prepare colors array colorsLen := len(cg.Colors) offsets := make([]flatbuffers.UOffsetT, colorsLen) for i := colorsLen - 1; i >= 0; i-- { offsets[i] = builder.CreateString(cg.Colors[i]) } FlatBufferColorGroupStartColorsVector(builder, colorsLen) for i := colorsLen - 1; i >= 0; i-- { builder.PrependUOffsetT(offsets[i]) } offset := builder.EndVector(colorsLen) FlatBufferColorGroupStart(builder) FlatBufferColorGroupAddCgId(builder, int32(cg.Id)) FlatBufferColorGroupAddName(builder, name) FlatBufferColorGroupAddColors(builder, offset) builder.Finish(FlatBufferColorGroupEnd(builder)) return builder.Bytes[builder.Head():] }