GO_INTERVIEW_LIB Telegram 435
💬 Как создать альтернативу 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 реализованы для добавления данных в буфер и чтения данных из буфера соответственно.

👉 Другое решение можно найти здесь
👍31🔥1



tgoop.com/go_interview_lib/435
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

The channel also called on people to turn out for illegal assemblies and listed the things that participants should bring along with them, showing prior planning was in the works for riots. The messages also incited people to hurl toxic gas bombs at police and MTR stations, he added. Earlier, crypto enthusiasts had created a self-described “meme app” dubbed “gm” app wherein users would greet each other with “gm” or “good morning” messages. However, in September 2021, the gm app was down after a hacker reportedly gained access to the user data. For crypto enthusiasts, there was the “gm” app, a self-described “meme app” which only allowed users to greet each other with “gm,” or “good morning,” a common acronym thrown around on Crypto Twitter and Discord. But the gm app was shut down back in September after a hacker reportedly gained access to user data. So far, more than a dozen different members have contributed to the group, posting voice notes of themselves screaming, yelling, groaning, and wailing in various pitches and rhythms. Each account can create up to 10 public channels
from us


Telegram Библиотека Go для собеса | вопросы с собеседований
FROM American