Получение отражения. Тип от имени - PullRequest
1 голос
/ 25 августа 2010

Если у меня есть имя типа (т. Е. «Контейнер / вектор»), есть ли способ найти отражение. Тип с заданным именем?Я пытаюсь написать простую систему рабочих заданий, поддерживаемую базой данных, и это было бы очень сложно без этой функции.

Ответы [ 2 ]

1 голос
/ 25 августа 2010

Я не вижу, как это было бы возможно каким-либо тривиальным способом (или вообще), поскольку разрешение имен является частью компилятора / компоновщика, а не среды выполнения.

Однако http://github.com/nsf/gocode может предложить некоторые идеи.Хотя я почти уверен, что это работает, обрабатывая файлы .a в $ GOROOT, поэтому я до сих пор не понимаю, как вы получите отражение. Тип.Может быть, если пакет exp / eval был более зрелым?

Конечно, если вы знаете все возможные типы, с которыми вы столкнетесь, вы всегда можете составить карту отражать. Тип.Но я предполагаю, что вы работаете с непредсказуемым вводом, или вы бы подумали об этом.

0 голосов
/ 26 августа 2010

Единственный способ создать reflect.Type - сначала получить конкретное значение предполагаемого типа.Вы даже не можете создавать составные типы, например срез ([]T), из базового типа (T).

Единственный способ перейти от string к reflect.Type вводя отображение самостоятельно.

mapping := map[string]reflect.Type {
  "string": reflect.Typeof(""),
  "container/vector": reflect.Typeof(new(vector.Vector)),
  /* ... */
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...