GO_INTERVIEW_LIB Telegram 923
В чем заключается механизм embedding в Go

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

➡️ Композиция вместо наследования
В Go предпочтение отдается композиции, а не наследованию. Один тип может включать другой, расширяя его функциональность.

➡️ Простота использования
Встроить один тип в другой очень просто — достаточно определить один тип внутри другого.

➡️ Поведение и интерфейсы
Если встроенный тип реализует интерфейс, то и тип, в который он встроен, автоматически реализует этот интерфейс.
type Engine struct {
Power int
Type string
}

type Car struct {
Engine
Brand string
Model string
}

func main() {
c := Car{
Engine: Engine{Power: 150, Type: "Petrol"},
Brand: "Ford",
Model: "Fiesta",
}
fmt.Println(c.Power) // Выведет: 150
}


Встраивание интерфейсов:
type Writer interface {
Write([]byte) (int, error)
}

type Logger struct {
Writer
}

Теперь Logger автоматически реализует интерфейс Writer, если его встроенное поле Writer реализует этот интерфейс.

Важные моменты:

Конфликты имен
Если у встроенного и внешнего типов одинаковые поля или методы, приоритет отдается внешнему типу.

Неявное поведение
Методы встроенного типа становятся частью внешнего, что может быть неочевидно при чтении кода.

Интерфейсы
В Go можно встраивать интерфейсы, создавая сложные интерфейсы на основе существующих.

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM



tgoop.com/go_interview_lib/923
Create:
Last Update:

В чем заключается механизм embedding в Go

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

➡️ Композиция вместо наследования
В Go предпочтение отдается композиции, а не наследованию. Один тип может включать другой, расширяя его функциональность.

➡️ Простота использования
Встроить один тип в другой очень просто — достаточно определить один тип внутри другого.

➡️ Поведение и интерфейсы
Если встроенный тип реализует интерфейс, то и тип, в который он встроен, автоматически реализует этот интерфейс.

type Engine struct {
Power int
Type string
}

type Car struct {
Engine
Brand string
Model string
}

func main() {
c := Car{
Engine: Engine{Power: 150, Type: "Petrol"},
Brand: "Ford",
Model: "Fiesta",
}
fmt.Println(c.Power) // Выведет: 150
}


Встраивание интерфейсов:
type Writer interface {
Write([]byte) (int, error)
}

type Logger struct {
Writer
}

Теперь Logger автоматически реализует интерфейс Writer, если его встроенное поле Writer реализует этот интерфейс.

Важные моменты:

Конфликты имен
Если у встроенного и внешнего типов одинаковые поля или методы, приоритет отдается внешнему типу.

Неявное поведение
Методы встроенного типа становятся частью внешнего, что может быть неочевидно при чтении кода.

Интерфейсы
В Go можно встраивать интерфейсы, создавая сложные интерфейсы на основе существующих.

🐸 Библиотека Go для собеса

BY Библиотека Go для собеса | вопросы с собеседований


Share with your friend now:
tgoop.com/go_interview_lib/923

View MORE
Open in Telegram


Telegram News

Date: |

Telegram users themselves will be able to flag and report potentially false content. best-secure-messaging-apps-shutterstock-1892950018.jpg Joined by Telegram's representative in Brazil, Alan Campos, Perekopsky noted the platform was unable to cater to some of the TSE requests due to the company's operational setup. But Perekopsky added that these requests could be studied for future implementation. To edit your name or bio, click the Menu icon and select “Manage Channel.” Invite up to 200 users from your contacts to join your channel
from us


Telegram Библиотека Go для собеса | вопросы с собеседований
FROM American