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

21 Авг 2019 в 06:30
327 +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 Апр 2024 в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир