Ref "не является типом" - сохранение типа в структуре - PullRequest
0 голосов
/ 27 октября 2018

У меня есть файл, подобный так:

package foo
type Handler struct {}

, а затем в другом файле, у меня есть:

import (
   "handlers/foo"
   "handlers/bar"
   "handlers/baz"
)

type AllHandlers struct {
    Foo foo.Handler
    Bar bar.Handler
    Baz baz.Handler
}

тогда в другом файле у меня есть:

all := routes.AllHandlers{}
foo := all.Foo{}
bar := all.Bar{}
baz := all.Baz{}

но это дает мне эту ошибку:

Фу не тип

Я, вероятно, совершаю какие-то вопиющие ошибки. Я хочу сохранить все обработчики в структуре AllHandlers, но не знаю, как это сделать.

Я считаю, что вопрос можно упростить следующим образом:

func (h HuruInjection) GetInjections() struct{} {
    return struct {
        Foo foo.Handler
        Bar  bar.Handler
        Baz baz.Handler
    }
}

вышесказанное не будет компилироваться, в основном потому, что, насколько я могу судить, вы возвращаете тип вместо значения, например, Class вместо экземпляра этого Class. Как я могу получить это для компиляции?

См. Этот пример: https://gist.github.com/ORESoftware/894438aee1d16aa9b2cb12ba25df274e

1 Ответ

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

Я решил эту проблему, хитрость в том, чтобы использовать правильный синтаксис.Вместо этого:

import (
   "handlers/foo"
   "handlers/bar"
   "handlers/baz"
)

type AllHandlers struct {
    Foo foo.Handler
    Bar bar.Handler
    Baz baz.Handler
}

Я сделал это:

import (
   "handlers/foo"
   "handlers/bar"
   "handlers/baz"
)


type Foo = foo.Handler
type Bar = bar.Handler
type Baz = baz.Handler

, затем я мог импортировать это и использовать Foo, Bar, Baz в качестве типов.Поэтому я не думаю, что вы можете группировать типы в структуре, но вы можете импортировать / экспортировать типы, используя приведенный выше синтаксис.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...