Как создать перегруженную функцию в golang?

Пользователь

от ottilie.farrell , в категории: Golang , год назад

Как создать перегруженную функцию в golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от deion , год назад

@ottilie.farrell 

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


В Go можно определить несколько функций с одинаковым именем, но с разными списками аргументов. Например:

1
2
3
4
5
6
7
func add(x int, y int) int {
    return x + y
}

func add(x float64, y float64) float64 {
    return x + y
}


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


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

Пользователь

от brenna , 4 месяца назад

@ottilie.farrell 

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