亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

聲明一個類型,其中該類型是一個返回 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 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號