Объявите тип, где этот тип является функцией, которая возвращает структуру {} - PullRequest
0 голосов
/ 28 октября 2018

У меня есть это:

type HandlerCreator = func() struct{}

Я пытаюсь объявить тип, где тип является func, который возвращает значение struct {}.

, так что, да, HandlerCreatorможет выглядеть так:

type Handler struct{}

func CreateHandler() Handler {
    return Handler{}
}

, и я пытаюсь использовать этот тип на карте:

var Handlers = map[string]HandlerCreator{
    "Register": register.CreateHandler,  // <<<< compile error
}

, но он говорит:

не может использовать регистр.CreateHandler (тип func () register.Handler) как тип func () struct {} в значении карты

кто-нибудь знает, как это сделать?

Голанг даже не позволитя делаю это:

var Handlers = map[string]func(){
    "Register": register.CreateHandler,
}

Я получаю эту ошибку:

cannot use register.CreateHandler (type func() register.Handler) as type func() in map value

снова, CreateHandler - это просто простая функция, показанная выше.

1 Ответ

0 голосов
/ 28 октября 2018

Когда вы говорите

type Handler struct{}

, тогда тип Handler и пустая структура - это разные типы .Поэтому функция, возвращающая Handler, и функция, возвращающая struct{}, также имеют разные типы.

Если бы я это делал, я бы изменил тип «создатель», чтобы он возвращал переименованный тип возврата

type HandlerCreator = func() Handler

, но он также должен работать, чтобы изменить функцию, возвращающую struct{}, или изменить Handler на псевдоним типа .

type Handler = struct{} // the "=" is important
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...