我有這個(gè):type HandlerCreator = func() struct{}我正在嘗試聲明一個(gè)類型,其中該類型是一個(gè)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 甚至不會(huì)讓我這樣做:var Handlers = map[string]func(){ "Register": register.CreateHandler,}我收到此錯(cuò)誤:cannot use register.CreateHandler (type func() register.Handler) as type func() in map value同樣,CreateHandler 只是一個(gè)簡單的函數(shù),如上所示。
1 回答

小怪獸愛吃肉
TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
當(dāng)你說
type?Handler?struct{}
那么Handler
類型和空結(jié)構(gòu)是不同的類型。因此,一個(gè)函數(shù)返回Handler
和一個(gè)函數(shù)返回struct{}
也是不同類型的。
如果我這樣做,我會(huì)更改“創(chuàng)建者”類型以返回重命名的返回類型
type?HandlerCreator?=?func()?Handler
但它也應(yīng)該可以將函數(shù)更改為 returnstruct{}
或更改Handler
為類型別名。
type?Handler?=?struct{}?//?the?"="?is?important
- 1 回答
- 0 關(guān)注
- 135 瀏覽
添加回答
舉報(bào)
0/150
提交
取消