Я хотел бы понять, как хранить несколько байтовых срезов отдельно в срезе. Как мы надеемся проиллюстрировать ниже, я хочу, чтобы структура хранилища хранила результат сжатого результата n, найденного в buf.

type storage struct 
{
    compressed []byte 
}       

func (s* storage) compress(n []byte) {
      var buf bytes.Buffer
      w := gzip.NewWriter(&buf)
      w.Write(n)
      w.Close()
      store := buf.Bytes()
      s.compressed = append(s.compressed, store)
}
go
2
stian 5 Окт 2013 в 20:44

1 ответ

Лучший ответ

В вашем коде compressed - это кусок байтов. Если вы хотите хранить срезы байтов, вам понадобится срез срезов байтов. Так что измените тип compressed на [][]byte

5
Bartosz 5 Окт 2013 в 21:47
В противном случае, если все это должно быть добавлено к одному и тому же фрагменту, используйте s.compressed = append(s.compressed, store...). Обратите внимание на многоточие после последнего аргумента. Это «распаковывает» срез store в список отдельных байтов, каждый из которых является отдельным аргументом для append.
 – 
jimt
6 Окт 2013 в 00:13
Спасибо. Приятно знать. Я думал, что действительно пробовал это, но попробую еще раз :)
 – 
stian
6 Окт 2013 в 03:07
1
Проще говоря, в golang, если вам нужно хранить массив байтовых массивов, вам нужно объявление var data [] [] bytes
 – 
wingsforever
28 Ноя 2020 в 01:48