Я пытаюсь создать карту, которая будет отображать строки в функции.Не все функции имеют одинаковую подпись.Например, я хотел бы иметь что-то вроде этого:
rf := map[string]func(...interface{}) error{
"FirstName": validateExistence(a.FirstName, "FirstName is required."),
"Postcode": validateMatchPattern(a.Postcode, `^\d{5}$`, "Could not match pattern for postcode."),
"Address": validateLength(a.Address, 0, 35, "Address must have up to 35 chars."),
}
Я получаю эту ошибку:
cannot use validateExistence("FirstName is required.") (type func(string) error) as type func(...interface {}) error in map value
Если я изменю объявление карты на map[string]func(f string, m string) error
, ошибкадля FirstName
решена, но я получаю другие ошибки для двух других функций:
cannot use validateMatchPattern(a.Postcode, "^\\d{5}$", "Could not match pattern for postcode.") (type error) as type func(string) error in map value
cannot use validateLength(a.Address, 0, 35, "Address must have up to 35 chars.") (type error) as type func(string) error in map value
Я понимаю, что проблема в объявлении карты, в func(...interface{})
, чтобы быть более точным.Эта часть должна иметь те же подписи, что и функция, которую я использую в качестве ключа.
Итак, мой вопрос: есть ли другой способ объявить карту, которая может содержать функции с разными сигнатурами?