为了账号安全,请及时绑定邮箱和手机立即绑定

声明一个类型,其中该类型是一个返回 struct{} 的函数

声明一个类型,其中该类型是一个返回 struct{} 的函数

Go
元芳怎么了 2023-05-04 16:05:28
我有这个: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


查看完整回答
反对 回复 2023-05-04
  • 1 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信