GO_INTERVIEW_LIB Telegram 547
Назовите лучшие практики работы с интерфейсами в 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. Избегание чрезмерного использования интерфейсов: преждевременное введение абстракций может усложнить код и сделать его менее читаемым.
👍19🤔2



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

View MORE
Open in Telegram


Telegram News

Date: |

The group’s featured image is of a Pepe frog yelling, often referred to as the “REEEEEEE” meme. Pepe the Frog was created back in 2005 by Matt Furie and has since become an internet symbol for meme culture and “degen” culture. Telegram users themselves will be able to flag and report potentially false content. Telegram has announced a number of measures aiming to tackle the spread of disinformation through its platform in Brazil. These features are part of an agreement between the platform and the country's authorities ahead of the elections in October. “Hey degen, are you stressed? Just let it all out,” he wrote, along with a link to join the group. 1What is Telegram Channels?
from us


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