🟡 Средний · 2 очк. Интерфейсы
Нужно ли передавать интерфейс по указателю (*MyInterface)?
A Да, всегда
B Почти никогда - интерфейс уже содержит указатели внутри
C Только для больших интерфейсов
D Да, для производительности
Объяснение вопроса

Нет. Интерфейс в Go - это структура из двух указателей (тип и значение), около 16 байт на 64-битной платформе. Передавать интерфейс по значению уже дёшево; передача по указателю (*io.Reader) только усложняет API и редко даёт выигрыш. Передавайте интерфейсы по значению: func F(r io.Reader).

func Process(r io.Reader) { ... }   // правильно
func Process(r *io.Reader) { ... }  // обычно не нужно

Указатель на интерфейс имеет смысл только если нужно изменить саму переменную-интерфейс внутри функции (редкий случай).

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.