Т.е. Read возвращает лишние 4 байта в заголовке, Write тоже просит лишние 4 байта в заголоке.
Поэтому я переопределяю эти методы следующим образом:
func (t *myReadWriter) Read(b []byte) (int, error) {
n, err := t.sub.Read(b)
if n < 4 {
return 0, err
}
// shift slice to the left
return copy(b[:n-4], b[4:n]), nil
}
func (t *myReadWriter) Write(b []byte) (int, error) {
return t.sub.Write(append(make([]byte, 4), b...), 4)
}
вопрос, насколько это оптимально? Я не хочу передавать в метод указатель на b, тогда придется переделывать весь софт. и Read/Write не будет соответствовать каноничному интерфейсу.
о чем это вообще?!
что за лишние 4 байта?
Обсуждают сегодня