tgoop.com/go_interview_lib/435
Create:
Last Update:
Last Update:
💬 Как создать альтернативу bytes.Buffer, которая реализует интерфейс io.ReadWriter, позволяет узнать длину и емкость буфера и занимает меньше памяти, чем bytes.Buffer?
Для этой задачи можно использовать новый тип, основанный на срезе байт. Вот пример реализации:
// Buffer — буфер байтов переменного размера с методами Read и Write
// Нулевое значение Buffer — пустой буфер, готовый к использованию
type Buffer []byte
// Write записывает len(p) байт из p в Buffer
func (b *Buffer) Write(p []byte) (int, error) {
*b = append(*b, p...)
return len(p), nil
}
// Read читает до len(p) байт в p из Buffer
func (b *Buffer) Read(p []byte) (int, error) {
if len(p) == 0 {
return 0, nil
}
if len(*b) == 0 {
return 0, io.EOF
}
n := copy(p, *b)
*b = (*b)[n:]
return n, nil
}
В примере создается тип Buffer, который является срезом байт (`[]byte`). Методы Write и Read реализованы для добавления данных в буфер и чтения данных из буфера соответственно.
👉 Другое решение можно найти здесь
BY Библиотека Go для собеса | вопросы с собеседований

Share with your friend now:
tgoop.com/go_interview_lib/435