Задать вопрос
VGrabko
@VGrabko
Golang, Php, Js

Можно ли правильнее такое сделать?

Задача у меня такова:
У меня есть 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)
		}

	}
}
  • Вопрос задан
  • 392 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    1С-программист
    10 месяцев
    Далее
  • Хекслет
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Академия Eduson
    Frontend-разработчик
    9 месяцев
    Далее
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Алабуга Елабуга
от 375 000 ₽
Алабуга Елабуга
от 157 500 ₽
Hard Bootstrapping LLC. Санкт-Петербург
от 250 000 до 500 000 ₽