Back to questions
Principal
14
Как использовать embedding (встраивание) для имитации наследования в Go?
Companies where asked
Avosend
Answer from AI
sobes.tech AI
В Go нет классического наследования, как в объектно-ориентированных языках, но можно использовать embedding (встраивание) для повторного использования кода и имитации наследования.
Embedding — это включение одного типа (обычно структуры) внутрь другого без явного указания поля. Это позволяет "унаследовать" методы встроенного типа и использовать их напрямую.
Пример:
package main
import "fmt"
type Animal struct {
Name string
}
func (a Animal) Speak() {
fmt.Println(a.Name, "говорит")
}
type Dog struct {
Animal // embedding
Breed string
}
func main() {
d := Dog{
Animal: Animal{Name: "Шарик"},
Breed: "Овчарка",
}
d.Speak() // вызов метода Animal через Dog
}
Здесь Dog встраивает Animal, и получает доступ к его методам напрямую, что похоже на наследование. Таким образом embedding позволяет композиционно расширять функциональность типов.