Не надо тянуть в типизированный язык, который вас же защищает от ваших же ошибок- не нужно в него тянуть архитектурные принципы из динамических языков.
В лоб: можно заменить интерфейсом-итератором, конкретная реализация которого будет отличаться для разного типа, но сигнатура интерфейса будет та же самая, поэтому его можно будет легко передать в функцию.
Меньше писать, но некрасиво - передавать разных типов массивы в разных по счету параметрах
rustler2000: То, что оставлена техническая возможность - вовсе не означает, что этой возможностью следует постоянно пользоваться.
Интерфейсы в предлагаемом вами варинте - это потенциальная проблема в программе.
Если уж нравятся интерфейсы - используйте их как я в первом варианте написал - интерфейс, реализующий итератор.
dinegnet: пардон но type assertion - или следующие стоны о генериках (потом сфинае и цртп), почему го не раст и не джава и пр.
идиоматически итерировать через range - interface{} это эквивален типобезопасного void* в С.
dinegnet: "неча тянуть подходы из одного языка в другой." вы сами себе противоречите. итераторы и самописные контейнеры (много откуда - к примеру С++) вместо родных, передача разных типов в разных параметрах (С) вместо type assertion,
я не поленился написал rsc и его ответ был - "Either approach is fine, depending on the circumstances. In general you should write what you feel results in the clearest, most understandable, most maintainable code."
Так вот итераторы будут самые тяжелые, по функции на тип будет легче конечно (но что, если критерии прохода изменятся? надо править каждую) но всеравно по одной на тип (эдакий ручной С++ но без шаблонов - и потом крики о генериках), а одна функа с range loop + type assertion самая простая.
"неча тянуть подходы из одного языка в другой." вы сами себе противоречите. итераторы и самописные контейнеры (много откуда - к примеру С++) вместо родных, передача разных типов в разных параметрах (С) вместо type assertion
Некоторые части одного языка программирования совершенно идентичны другому языку программирования.
Но это может ввести в заблуждение только неопытного программиста-студента, типа вас, который еще толком и не видел языков программирования.
И не следует делать неверных обобщений, что, раз какая-то часть в языках совпадает, то и в другой части они совпадают.
rustler2000: Я уже написал - нефига использовать чуждые концепции для языка.
Если некоторые заготовки программистов этого не понимают, то предлагаю обсудать лет через пять, когда вы будете уже понимать о чем речь.