Как создать базовый метод для семейства родственных структур в Go? Доброго времени суток, коллеги. Начал изучать Go и появился такой вопрос, ввиду нетипичности ОО-возможностей языка: Допустим, у меня есть базовая структура A. Я описал ее члены и имплементировал для нее методы (именно методы структуры, а не функции). Например, я имплементировал 5 базовых методов. Далее, у меня появилась необходимость создать родственную структуру (B) и добавить к ней еще одно поле, при этом сохранив за ней возможность использовать методы родительской структуры (А)? Как это реализовать в Go? По тем материалам, что мне довелось прочесть, такое можно реализовать через композицию/агрегацию + интерфейсы. Есть ли более привычный способ передачи поведения, в стиле наследования поведения?

1 Сен 2022 в 19:54
258 +1
0
Ответы
1

В Go, наследование не поддерживается напрямую, как в других объектно-ориентированных языках. Однако вы можете достигнуть подобного поведения, используя композицию и интерфейсы.

Для вашего случая, можно создать интерфейс, который определяет методы вашей базовой структуры A, а затем имплементировать этот интерфейс в структуре B. В результате структура B будет иметь доступ ко всем методам, определенным в интерфейсе, который включает методы структуры A.

Пример:

package main
import "fmt" "fmt"
"fmt"

type A struct {
Field1 int
Field2 string
}
func aAa AaA Method1 {
fmt.Println"Method1""Method1""Method1" }
func aAa AaA Method2 {
fmt.Println"Method2""Method2""Method2" }
type InterfaceA interface {
Method1 Method2 }
type B struct {
Field3 float64
A
}
func main {
b := B{Field3: 3.14, A: A{Field1: 42, Field2: "hello"}}
b.Method1 b.Method2 fmt.Printf""%+v\n", b" }

В данном примере структура B содержит поле типа A, что позволяет ей использовать все методы, определенные для структуры A. Таким образом, вы можете добавить дополнительные поля к структуре B и при этом сохранить доступ к методам структуры A.

Надеюсь, это поможет вам решить вашу задачу. Удачи в изучении Go!

16 Апр 2024 в 18:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир