Тип не удовлетворяет интерфейсу из-за указательного получателя
При сборке сервиса появилась ошибка компиляции в этом месте:
type Handler interface {
Handle(ctx context.Context) error
}
type OrderService struct{ repo Repo }
func (s *OrderService) Handle(ctx context.Context) error { return nil }
func main() {
var h Handler = OrderService{}
_ = h
}
Что здесь не так?
- Код соберётся: компилятор сам возьмёт адрес значения при присваивании в интерфейс
- Код соберётся, но метод отработает на копии и изменения структуры потеряются
- Метод объявлен на `*OrderService`, поэтому интерфейсу удовлетворяет только `&OrderService{}`
- Интерфейс требует, чтобы все методы принимали `context.Context` первым аргументом по значению
