«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Можете ли вы наследовать методы без использования встроенных структур в Go?

Можете ли вы наследовать методы без использования встроенных структур в Go?

Опубликовано 11 ноября 2024 г.
Просматривать:728

Can you inherit methods without using embedded structs in Go?

Внедрение структур для наследования методов

Вопрос

Можно ли наследовать методы типа без использования встроенных структур?

Контекст

Обсуждение вращается вокруг концепции использования встроенных структур для получения доступа к методам другой тип. Автор отмечает, что внедрение структуры вынуждает их инициализировать встроенную структуру при инициализации содержащей структуры, что они считают громоздким. Они предоставляют примеры кода, чтобы продемонстрировать проблему, и выражают желание избежать явной инициализации встроенной структуры.

Ответ

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

Встроенные структуры и продвигаемые поля

Затем ответ углубляется в концепцию расширенных полей, которые представляют собой поля анонимных встроенных структур, доступ к которым можно получить непосредственно через содержащую структуру. Однако расширенные поля нельзя использовать в составных литералах, поэтому требуется явная инициализация при создании структуры, содержащей встроенное анонимное поле.

Ограничения и обходные пути

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

Дополнительные примечания

Ответ юмористически завершается личным приветствием автор, Джефф, ссылается на предыдущее взаимодействие.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3