Ответ
Утиная типизация — это концепция, при которой тип объекта определяется не его явным объявлением, а набором методов и свойств, которые он реализует. Если объект "крякает как утка и ходит как утка", то он считается уткой, даже без явного наследования.
В Go утиная типизация реализуется через интерфейсы. Интерфейс неявно реализуется, если тип содержит все его методы.
type Duck interface {
Quack()
Walk()
}
type Bird struct{}
func (b Bird) Quack() { fmt.Println("Quack!") }
func (b Bird) Walk() { fmt.Println("Walking like a duck") }
func MakeDuckSpeak(d Duck) {
d.Quack()
}
func main() {
bird := Bird{}
MakeDuckSpeak(bird) // Bird автоматически удовлетворяет Duck
}
Преимущества: гибкость, полиморфизм без наследования. Недостаток: сложнее отслеживать, какие типы реализуют интерфейс.
Видео-ответы
▶
Проваленный собес на middle .net 150k+ #programming , #c#, #database , #programminglanguage , #net
▶
КАК Я ИЗИ ХАКНУЛ СОБЕС В САМОКАТ ...
▶
Собеседование на Go-разработчика с тимлидом из Avito | Эйч Навыки
▶
Mock-собеседование со студентом курса Golang // Демо-занятие курса «Golang Developer. Professional»