Как в Golang передавать в функцию массивы структур разных типов? У меня есть несколько массивов структур разного типа.
Мне необходимо передать по очереди эти массивы в функцию.
Но типы у структур разные.
Код что-то типа такого:func Function(MyStruct /*Что здесь написать?*/){
for _ , field := range MyStruct {
...
}
}
func main() {
...
Function(city, country, []MyStruct1)
Function(city, country, []MyStruct2)
...
}
Это вообще возможно реализовать?

21 Авг 2019 в 06:30
189 +1
0
Ответы
1

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

Пример:

package main
import (
"fmt"
)
// Объявляем интерфейс
type MyStruct interface {
GetName() string
}
// Структуры
type City struct {
Name string
}
func (c City) GetName() string {
return c.Name
}
type Country struct {
Name string
}
func (c Country) GetName() string {
return c.Name
}
// Функция принимает массив структур через интерфейс
func Function(data ...MyStruct) {
for _, field := range data {
fmt.Println(field.GetName())
}
}
func main() {
// Создаем массивы структур разных типов
city := []MyStruct{City{Name: "New York"}, City{Name: "Moscow"}}
country := []MyStruct{Country{Name: "USA"}, Country{Name: "Russia"}}
// Передаем их в функцию
Function(city...)
Function(country...)
}

В данном примере у нас есть интерфейс MyStruct, который имеет метод GetName(). Затем мы объявляем структуры City и Country, которые реализуют этот интерфейс. В функции Function мы можем принимать массив структур через интерфейс и вызывать метод GetName() для каждой структуры.

Таким образом, вы можете передавать массивы структур разных типов в функцию и обрабатывать их в зависимости от реализации интерфейса.

20 Апр в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 727 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир