我有這個: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 關注
- 126 瀏覽
添加回答
舉報
0/150
提交
取消