Задача, передать функции reFactory переменную типа стринг(key), с помощью которой мы получаем элементы(функции) нужного нам вида спорта. Получаем нужные функции, допустим Footbal, и проходимся по ним, закидывая в аргумент функции, переменную типа стринг(betType) и тогда функция возвращает нужный нам тип данных.
// Regular expression for betType.
type regp struct{}
// Func returns necessary methods-regexp
func reFactory(key, bet string, shortName interface{}) {
regpfootball := ®p{}
regphockey := ®p{}
regpFactoryMap := map[string]interface{}{
"Football": []func(string, interface{}){
regpfootball.footballWinBets,
regpfootball.footballTotalBets,
},
"Hockey": []func(string, interface{}){
regphockey.hockeyWinBets,
},
}
// Find necessary betType(send to all func - betType)
functions := regpFactoryMap[key] // will show all func address
for _, v := range functions {
// error
}
}