Избежание повторения кода для функций с общими полями в 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