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

我有这个:


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 只是一个简单的函数,如上所示。


元芳怎么了
浏览 95回答 1
1回答

小怪兽爱吃肉

当你说type Handler struct{}那么Handler类型和空结构是不同的类型。因此,一个函数返回Handler和一个函数返回struct{}也是不同类型的。如果我这样做,我会更改“创建者”类型以返回重命名的返回类型type HandlerCreator = func() Handler但它也应该可以将函数更改为 returnstruct{}或更改Handler为类型别名。type Handler = struct{} // the "=" is important
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go