Задача у меня такова:
У меня есть 100500 элементов
key, value []byte
Мне всё это необходимо собрать в 1 []byte и с лёгкостью декодиривать в 100500
key, value []byte
.
Сейчас достиг базового уровня. Ходят по сети байты в таком формате
type D struct {
C uint8
Db string
Key, Value []byte
}
с указателями длины в первых байтах.
Необходимо в Value запихнуть:
type Map struct {
Key, Value []byte
}
Дошел до алгоритма такого вида
9|12|key|value где первые два элемента говорят длина ключа и значения. Потом я вытаскиваю со слайса длину и перехожу к следующему указателю
UPD.
Написал не очень понятно так что код тестов готового приложу
func EncodeDecodeTest(t *testing.T) {
d := []uint8{Get, Set, Up, Del}
for key := range d {
g := D{}
g.C = d[key]
g.Db = "db"
g.Key = []byte("sdfsdfsdfsdfsdf")
g.Value = []byte("dsdfsdfs35345dfsdf")
gg := Decode(Encode(g))
if g.C != gg.C {
t.Error(g.C, gg.C)
}
if g.Db != gg.Db {
t.Error(g.Db, gg.Db)
}
if !slice.ByteSame(g.Key, gg.Key) {
t.Error(g.Key, gg.Key)
}
if !slice.ByteSame(g.Value, gg.Value) {
t.Error(g.Value, gg.Value)
}
}
}