> Куда нужно положить интерфейс, если робот реализует интерфейс? (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: Black Wall Group (BWG)

Стек: Go

> Пример ответа

Интерфейс в Go должен быть определён на стороне потребителя, а не того, кто его реализует. Если робот реализует интерфейс, то сам интерфейс (например, RobotInterface) логичнее разместить в пакете, который будет его использовать (например, controller или service), а не в пакете robot. Робот просто неявно удовлетворяет интерфейсу через свои методы - ему не нужно знать о существовании интерфейса.

Пример:

GO
// Пакет controller (потребитель)
package controller
type RobotInterface interface {
Move(dx, dy int) error
Stop() error
}
func HandleMovement(robot RobotInterface) {
// использует интерфейс
}
GO
// Пакет robot (реализация)
package robot
type Robot struct{}
func (r *Robot) Move(dx, dy int) error { /* ... */ }
func (r *Robot) Stop() error { /* ... */ }

Такой подход минимизирует зависимости и следует принципу "принимай интерфейсы, возвращай структуры".

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью