Я пытаюсь определить пару интерфейсов для рефакторинга некоторого кода, и у меня возникает проблема, когда Go не позволяет мне назначать функции переменным.
Это установка
main.go
type Gettable interface {
Get() int64
}
type MyFunction func(int64) (Gettable, error)
func main() {
var f MyFunction
f = sub.TestFn2
a, _ := f(1)
fmt.Println(a)
}
основной / суб
package sub
type MyStruct struct {
Val int64
}
func (v MyStruct) Get() int64 {
return v.Val
}
func TestFn2(a int64) (MyStruct, error) {
return MyStruct{a}, nil
}
Я пытаюсь определить тип универсальной функции, а в подпакете создать конкретные функции
и в идеале я хочу сохранить функции на карте и вызывать их как-то так:
FnMap["fnName"]()
Я еще не там,
я получаю сообщение об ошибке
/topics.go:27:4: cannot use sub.TestFn2 (type func(int64) (sub.MyStruct, error)) as type MyFunction in assignment
но MyStruct
четко реализует интерфейс Gettable