tgoop.com/go_interview_lib/547
Create:
Last Update:
Last Update:
Назовите лучшие практики работы с интерфейсами в Go.
1. Маленькие интерфейсы проще реализовывать и мокать.
type Reader interface {
Read(p []byte) (n int, err error)
}
вместо
type ReadCloser interface {
Read(p []byte) (n int, err error)
Close() error
}
2. Использование интерфейсов в параметрах функций для обеспечения гибкости в реализации.
func CopyData(r Reader, w Writer) error {
buf := make([]byte, 1024)
for {
n, err := r.Read(buf)
if err != nil {
return err
}
if n == 0 {
break
}
if _, err := w.Write(buf[:n]); err != nil {
return err
}
}
return nil
}
3. Возврат конкретных типов, когда нужно предоставить полный набор функциональности.
func NewBuffer() *bytes.Buffer {
return &bytes.Buffer{}
}
4. Использование композиции интерфейсов: создание сложных интерфейсов на основе более простых.
type ReadCloser interface {
Reader
Closer
}
5. Избегание чрезмерного использования интерфейсов: преждевременное введение абстракций может усложнить код и сделать его менее читаемым.
BY Библиотека Go для собеса | вопросы с собеседований
Share with your friend now:
tgoop.com/go_interview_lib/547