Что такое утиная типизация?
Утиная типизация — это концепция в языках программирования, при которой объекты строят свою спецификацию не на основе имени класса (типа), а на основе методов и свойств, которыми они обладают. Это позволяет объектам с разными типами вести себя аналогично, если они поддерживают одинаковый интерфейс.
Утиная типизация, также известная как полиморфизм на основе интерфейсов, является принципом, при котором тип объекта определяется не непосредственно его классом, а базируется на наборе методов и свойств, которые объект реализует. В языке Golang это достигается через интерфейсы. Например, если у нас есть интерфейс Ducker с методом Quack(), любой объект, реализующий этот метод, по факту оказывается "уткой" и может быть использован везде, где ожидается объект типа Ducker.
Этот подход позволяет писать более гибкий и расширяемый код, поскольку объекты разных типов могут вести себя схожим образом, если они реализуют одинаковые интерфейсы. Также утиная типизация способствует разделению интерфейсов и реализаций, что упрощает тестирование кода и делает его более понятным для других разработчиков.
Пример из Go это использование интерфейса Stringer, определенного в стандартной библиотеке, который позволяет объекту преобразовывать себя в строку. Объект, который реализует метод String() для интерфейса Stringer, может быть выведен при помощи fmt.Println и других функций, которые ожидают строковое представление объекта
Отметьте свой прогресс