我有这个:
type HandlerCreator = func() struct{}
我正在尝试声明一个类型,该类型是一个返回struct {}值的func。
是的,一个HandlerCreator可能看起来像:
type Handler struct{}
func CreateHandler() Handler {
return Handler{}
}
我正在尝试在地图中使用该类型:
var Handlers = map[string]HandlerCreator{
"Register": register.CreateHandler, // <<<< compile error
}
但它说:
不能将register.CreateHandler(func()register.Handler类型)用作 在地图值中输入func()struct {}
有人知道该怎么做吗?
Golang甚至不允许我这样做:
var Handlers = map[string]func(){
"Register": register.CreateHandler,
}
我收到此错误:
cannot use register.CreateHandler (type func() register.Handler) as type func() in map value
再次,CreateHandler只是一个简单的函数,如上所示。
答案 0 :(得分:2)
当你说
type Handler struct{}
然后是Handler
类型和一个空结构are different types。因此,返回Handler
的函数和返回struct{}
的函数也是不同的类型。
如果要这样做,我将更改“创建者”类型以返回重命名的返回类型
type HandlerCreator = func() Handler
但它也应该用于更改函数以返回struct{}
或将Handler
更改为type alias。
type Handler = struct{} // the "=" is important