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

Как избежать повторения кода для функций с общими полями в Golang?

Опубликовано 23 декабря 2024 г.
Просматривать:588

How to Avoid Code Repetition for Functions with Shared Fields in Golang?

Избежание повторения кода для функций с общими полями в Golang

Чтобы предотвратить дублирование кода при написании функций для нескольких структур с одинаковыми полями, рассмотрите следующий подход:

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

type Version string

func (v Version) PrintVersion() {
    fmt.Println("Version is", v)
}

В свои структуры включите пользовательский тип в качестве поля, используя композицию:

type Game struct {
    Name               string
    MultiplayerSupport bool
    Genre              string
    Version
}

type ERP struct {
    Name               string
    MRPSupport         bool
    SupportedDatabases []string
    Version
}

Теперь вы можете получить доступ к полю «Версия» и распечатать его из обеих структур, используя метод, прикрепленный к пользовательскому типу:

func main() {

    g := Game{
        "Fear Effect",
        false,
        "Action-Adventure",
        "1.0.0",
    }

    g.PrintVersion()
    // Version is 1.0.0


    e := ERP{
        "Logo",
        true,
        []string{"ms-sql"},
        "2.0.0",
    }

    e.PrintVersion()
    // Version is 2.0.0

}

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

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

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

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

Copyright© 2022 湘ICP备2022001581号-3