我有这个:type HandlerCreator = func() struct{}我正在尝试声明一个类型,其中该类型是一个func返回struct{}值的类型。所以,是的,aHandlerCreator可能看起来像: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 只是一个简单的函数,如上所示。
1 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
当你说
type Handler struct{}
那么Handler
类型和空结构是不同的类型。因此,一个函数返回Handler
和一个函数返回struct{}
也是不同类型的。
如果我这样做,我会更改“创建者”类型以返回重命名的返回类型
type HandlerCreator = func() Handler
但它也应该可以将函数更改为 returnstruct{}
或更改Handler
为类型别名。
type Handler = struct{} // the "=" is important
- 1 回答
- 0 关注
- 94 浏览
添加回答
举报
0/150
提交
取消