2013-10-05 4 views
1

Я хотел бы понять, как хранить несколько байтов отдельно в срезе. Как мы надеемся проиллюстрировать ниже, я хочу, чтобы структура хранилища сохранила результат сжатого результата 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) 
} 

ответ

3

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

+0

В противном случае, если он все должен быть добавлен к одному и тому же фрагменту, используйте 's.compressed = append (s.compressed, store ...)'. Обратите внимание на многоточие после последнего аргумента. Это «распаковывает» секцию «store» в список отдельных байтов, каждый из которых является отдельным аргументом «append». – jimt

+0

спасибо. Приятно знать. Я думал, что на самом деле пробовал это, но попробую еще раз :) – stian

Смежные вопросы